Wie gebe ich nach Erzeugung eines Objektes ein "int" Array im BlueJ-Methodenaufruf ein?
Ich sitze vor einem eigentlich so banalem Problem. Ich habe eine Methode geschrieben die durch Benutzereingabe einen String und ein int Array beim Aufruf übernehmen soll. Ich weiß wie ich den String in BlueJ beim Aufruf eingebe. Einfach in die "meinStringEingeben", aber wie mache ich das beim int Array oder überhaupt bei einem Array? Ich habe so einiges versucht. "Gefunden" habe ich nur diese Möglichkeit { irgendEineZahl } ABER wenn ich das mache dann erzeugt er kein int array sondern ein einfaches int, wodurch es selbstverständlich dann zum ArrayIndexOutOfBoundsException Auswurf kommt.
Mein Methodenkopf sollte auch nicht die Quelle des Übels sein
void meineMethode (String string, int[] intArray) deklariert habe.
1 Antwort
du musst dem Array immer eine feste Größe zuweisen
int[] arr = new int[100];
oder
int[] arr = {10,12,55,33};
Wenn du ein bestehendes Array hast, dann kannst du die Größe über .lenght abfragen.
int laenge = arr.lenght;
Was hat das Eingabefeld, in das du den Wert {10} einträgst, für einen Default-Wert?
Der muss in BlueJ doch gar nicht festgelegt werden. Der erhält ja beim Aufruf der Methode seinen Wert für die Größe.
Ohh…
Ok, jetzt ist der Groschen endlich gefallen.
Normalerweise müsste die Zuweisung mit den {} funktionieren.
https://stackoverflow.com/questions/20960930/need-bluej-help-method-call-array
Oh, lol. Jetzt klappt es. Man muss wirklich für jeden Index den Wert initialisieren. Klar, das er dann nur 1 Feld erzeugt. Übrigens hatte ich mich verguckt. Es war nur ein einziges Feld im Array, was ja auch rückblickend logisch ist. Bei einem Wert den ich eingegeben habe. :-D
Danke sehr!
Ja, ohne Index-Zuweisung weiß der Compiler nicht, wie groß das Array werden soll. Er kann ja schlecht raten :D
Vielleicht sollte man ihm das mal beibringen? :-D
Dss wäre schwierig, weil das gegen die Definition eines Arrays stehen würde. Ein Array muss bei der Erzeugung genau wissen wie groß es ist, die Größe darf sich zur Laufzeit nicht mehr ändern. Genau dafür gibt es ja Listen usw :D
Vielleicht liegt es an der Formulierung. Hier ein Bild wie es aussieht. In dem unteren Feld müsste ich quasi die Größe zuweisen die das Array bekommen soll.
Wenn ich in die geschweiften Klammern aber eine Zahl einfüge, dann erstellt er jedesmal nur ein Array der Größe 1 (also mit 2 Felder) und fügt den Wert den ich eingegeben habe in das Feld mit dem Index 1.
https://picload.org/view/dopaoaii/intarray1.jpg.html
Ich verstehe auch nicht wieso er das tut.