Java Array mit individuellem Namen und Größe erstellen?
Wie vom Code her. Mit individuell meine ich selbst bestimmbar.
public class Main {
String arrayname;
int arraygröße;
public void deinArray(String pArrayname, int pArraygröße) {
arrayname = pArrayname;
int[] arrayname = new int[pArraygröße];
}
public static void main(String[] args) {
deinArray("meinArray", 2);
}
}
Funktioniert nicht. Für einen Fehler, den ich hier behebe, kommt der nöchste Fehler.
public class Main {
static String arrayname;
static int arraygröße;
public static void deinArray(String pArrayname, int pArraygröße) {
arrayname = pArrayname;
arraygröße = pArraygröße;
int[] arrayname = new int[arraygröße];
}
public static void main(String[] args) {
deinArray("meinArray", 2);
System.out.println("Name des Arrays = " + arrayname+" Größe des Arrays = "+arraygröße);
}
}
So funktionierts jetzt wie ich es wollte. Warum aber oben noch ein "static" davor muss, ist mir noch unklar
Eine Datenstruktur, bei der man Schlüssel-Wert-Paare abspeichern kann und den Wert über den Schlüssel auslesen kann.
A h okay
2 Antworten
Der Name einer Variablen ist immer individuell. Den denkt sich niemand für dich aus. Weder der Compiler, noch die JVM.
https://studyflix.de/informatik/java-array-1898
Ich glaube ein Video als erklärung ist viel besser als irgend ein Text.
Was ist denn die Fehlermeldung genau? Das ist schon ne wichtige Info.
Zudem ist der Code sinnlos. Du machst ja nix mit dem Array und würdest es sofort wegwerfen nach der Erstellung. Das ist zwar ok, aber wie gesagt sinnlos.
Ob Java Umlaute in Arraynamen kennt weiß ich auch nicht.
Die Syntax zur Erstellung des Arrays an sich sieht korrekt aus.
Allerdings rufst du in einer statischen Main Methode eine nichstatische deinArray Methode auf. Das geht nicht. Du MUSST dann deinArray auch als static deklarieren.
Ich möchte einfach nur seit 1 Stunde ein Array erstellen, dessen Name und Größe man über Parameter festlegen kann🤯🤬
DIe Fehlermeldung ist: Cannot make a static reference to the non-static method deinArray(String, int) from the type Main
Dein Problem ist wie gesagt nicht die Array-Syntax. Sondern, dass du aus deiner
main() Methode, die static ist, eine Methode aufrufst, die nicht static ist, ohne ein Objekt zu haben.
Ändere mal Folgendes:
public void deinArray(String pArrayname, int pArraygröße) {
in
public static void deinArray(String pArrayname, int pArraygröße) {
public static int[] createArray(int size) int[] {
return new int[size];
}
Und
int[] myarray = createArray(10);
int[] yourarray = createArray(20);
So in etwa. Hab die Java-Syntax nicht mehr ganz drin, weil ich mittlerweile meistens eine andere Sprache nutze
public class Main {
String arrayname;
int arraygröße;
public void deinArray(String pArrayname, int pArraygröße) {
arrayname = pArrayname;
int[] arrayname = new int[pArraygröße];
}
public static void main(String[] args) {
deinArray("meinArray", 2);
}
}
Jetzt rastet dieser Computer wieder aus, und unterstreicht "arrayname" bei arrayname = pArrayname mit der Fehlermeldung "Cannot make a static reference to the non-static field arrayname". Dann habe ich einfach schnell ein static davor hingelegt, also "static arrayname = pArrayname" und dann war plötzlich alles gut. Ich habe jetzt zwei Fragen und eine Info: Was habe ich hier genau gemacht, mit dem Hinzufügen des Wortes "static"? Und was ist mit int arraygröße? Muss man da nicht auch noch irgendwas mit "static" machen? Das Thema "static" und "private" und so habe ich bis jetzt nur angerissen.
eh quatsch, ich meine Static muss vor der Deklaration der Variablen geschrieben werden. So funktioniert jetzt alles, so wie ich es will:
public class Main {
static String arrayname;
static int arraygröße;
public static void deinArray(String pArrayname, int pArraygröße) {
arrayname = pArrayname;
arraygröße = pArraygröße;
int[] arrayname = new int[arraygröße];
}
public static void main(String[] args) {
deinArray("meinArray", 2);
System.out.println("Name des Arrays = " + arrayname+" Größe des Arrays = "+arraygröße);
}
}
und unterstreicht "arrayname" bei arrayname = pArrayname mit der Fehlermeldung "Cannot make a static reference to the non-static field arrayname".
Freilich. Weil das selbe, was für Methoden gilt, auch für Felder gilt (Klassenvariablen)
Dann habe ich einfach schnell ein static davor hingelegt, also "static arrayname = pArrayname" und dann war plötzlich alles gut
Klingt plausibel.
Was habe ich hier genau gemacht, mit dem Hinzufügen des Wortes "static"?
Eine Klasse ist der Bauplan für ein Objekt. Um ein Objekt zu erhalten, musst du die Klasse instanzieren.
class Hund {
int anzahlBeine = 4
public void bellen() {
// Wau Wau
}
}
Hund bello = new Hund();
bello.bellen();
Hund struppi = new Hund();
struppi.bellen();
So funktionieren Klassen. Du erzeugst Objekte aus ihnen, die dann dieselben Eigenschaften haben, wie die Klasse.
anzahlBeine nennt man in dem Falle eine Objekt-Eigenschaft und bellen() eine Objekt-Methode. Ohne ein Objekt zu haben kannst du diese nicht verwenden.
Sowohl vor Eigenschaften als auch Methoden kannst du static schreiben. Dadurch werden Objekteigenschaften zu Klasseneigenschaften und Objektmethoden zu Klassenmethoden. Im gegensatz zu den Objekt-Dingern rufst du die Klassen-Dinger über den Klassennamen auf.
class Hund {
static int anzahlBeine = 4
public static void bellen() {
// Wau Wau
}
}
Hund.bellen();
Die main() Methode der Hauptklasse bei Java ist static, wird also durch Java aufgerufen, ohne, dass Java vorher eine Instanz deiner Klasse Main erzeugt.
Da du keine Instanz deiner Klasse hast kannst du auch keine Objektmethoden benutzen. Daher musstest du in deinem Falle deine Methoden und Eigenschaften als static schreiben. Die andere Alternative wäre, dass du innerhalb der main() Methode ein Objekt der selben Klasse erzeugst und darauf die Objektmethoden anwendest:
class Main
{
public void beispiel() {
// Tu was sinnvolles
}
public static void main(String[] args) {
Main instance = new Main();
instance.beispiel();
}
}
Und was ist mit int arraygröße? Muss man da nicht auch noch irgendwas mit "static" machen?
Nein. Wenn du dir deinen Code genau anschaust wirst du merken, dass du die Objekt-Eigenschaft arraygröße nirgendwo verwendest. Also meckert er auch nicht.
Edit: Jetzt nach deinem neuen Codebeispiel brauchst du das static natürlich auch dort.
static String arrayname;
static int arraygröße;
public static void deinArray(String pArrayname, int pArraygröße) {
arrayname = pArrayname;
arraygröße = pArraygröße;
int[] arrayname = new int[arraygröße];
}
Der Code ergibt keinen Sinn. Daher kauf dir ein vernünftiges Buch und lerne die Grundlagen, anstatt hier pausenlos unnötige Fragen zu stellen, die sich nicht ergeben würden, wenn du richtig lernen würdest.
Höre einfach auf toxisch zu sein. Ich habe das Thema jetzt verstanden. Ein Buch kann hilfreich sein. Das stimmt. Doch wenn ich einen Aspekt aus dem Buch nicht verstehe, weil es einfach dort zu schlecht erklärt wurde, und es sich bei disesem Buch um ein "vernünftiges"Buch handelt, sitzt man da. Ich würde dann das Internet benutzen, um den Teil zu checken. Du aber nicht. Du bleibst stur vor deinem "vernünftigem" Buch sitzen und kommst nicht weiter, weil das Buch es nicht schafft, dich weiterzubringen. Und wenn ich dann die Antwort auf meine Frage im Internet nicht finden kann, frage ich einfahc, verstehst du, frage ich. Frag mal dein Buch nach dem Bug in deinem Code.
Ich bin nicht toxisch, sondern gebe dir Tipps zum erfolgreichen Lernen. Denn mit deiner Einstellung kommst du in der Softwareentwicklung nicht sehr weit.
Und dein Code zeigt, dass dir elementare Kenntnisse der Java-Grundlagen fehlen. Mit einem guten Buchen würden sich solche Fragen nicht ergeben, da du schrittweise in die Themen eingeführt wirst.
Die meisten deiner Fragen ließen sich durch eine eigene Recherche beantworten, indem du zum Beispiel Fehlermeldungen nachschaust. Gerade durch die eigene Recherche wirst du die Inhalte auch besser behalten.
Welche Bücher gibt es denn? Von einem "guten" Buch erwarte ich, dass es einfach erklärt ist und all die "dots" verknüpft...dass am Ende alles einen großen Sinn ergibt....
Servus,
ich würde es so machen:
String[] Zahlen = {"eins", "zwei", "drei", "vier"};
System.out.println(zahlen[0]);
Mehr Infos gibts hier: https://www.w3schools.com/java/java_arrays.asp
Mit freundlichen Grüßen
Funktioniert nicht. Für einen Fehler, den ich hier behebe, kommt der nöchste Fehler.