Hey,
ich hänge derzeit echt auf dem Schlauch.
Ich habe einen Code in dem 3 oder 4 Fehler (muss man herausfinden) versteckt sind.
Ich verstehe aber echt nicht was da schief läuft.
Damit ihr mir das nicht vorsagt und ich es selber verstehen möchte, würde ich das gerne kooperativ oder mit Erklärungen lösen.
Wenn ich den Code ausführe mit der Anzahl 3 beim Wert den man eingeben kann, dann kommt der Fehler:
java.lang.ArrayIndexOutOfBoundsException: 3
at FehlerhafteListeStudis.main(FehlerhafteListeStudis.java:36)
Ich würde gern versuchen den Code in Worte zu schreiben, damit ihr mich verbessern könnt, falls ich etwas falsch verstehe. Ich möchte es wirklich verstehen und es ist auch simpel, jedoch stehe ich noch ganz am Anfang mit Java daher Sorry, falls ich es nicht direkt verstehe.
Was ich schon mal verstehe, wir geben ein wie viele Studenten es gibt per intEingabe.
Wir wollen ein String Array und die länge soll die anschließende int Eingabe sein.
Dann ein 2 Prints. Und eine For Schleife.
Ich weiß, dass ein Array bei dem Index 0 beginnt. Die For Schleife fängt hier jedoch bei 1 an.
Ist das legitim?
Sie wird so lange ausgeführt, bis i größer ist, als die Anzahl der Objekte im namen Array richtig?
Es wird immer +1 hinzugefügt.
Dann ein Print ausdruck jedoch bin ich mir nicht ganz sicher ob ich das darauffolgende richtig verstehe?
Im NamenArray wird die Anzahl der Objekte im namenArray - 1 gerechnet, sobald man einen Namen eingibt.
Aber was mach das anzStudis++? Erhöht es die Anzahl der Objekte im new String[anzStudis]??
Danach kommen wieder 2 Prints und eine For Schleife.
Diese fängt bei 0 an. Ist das schon einer der Fehler?
Weil die erste for Schleife bei 1 und die 2te bei 0 anfängt?
Die Schleife geht so lange wie i kleiner/gleich anzStudis ist. Und wird auch immer um +1 erhöht. Am Ende wirds geprinted.
Der Fehler java.lang.ArrayIndexOutOfBoundsException: 3, der erscheint, wenn ich 3 am Anfang bei der intEingabe erscheint ist mir relativ schlüssig. Nach dem ich dann 2 Namen eingebe kommt die Fehlermeldung.
Wenn ich in die intEingabe 2 Eingebe, kommt der Fehler schon nach einem Namen.
Also scheint da was mit dem Zählen nicht zustimmen.
Scheint ja so als wenn Java den ersten oder zweiten Index des Arrays überspringt bzw an einem falschen Startwert anfängt und somit außerhalb der Range des Arrays kommt.
Könnte das sein?
public class FehlerhafteListeStudis {
public static void main(String[] args) {
System.out.println("-- StudiVerwaltung --");
System.out.println();
System.out.print("Anzahl Studis? ");
int anzStudis = Eingabe.intEinlesen();
String[] namen = new String[anzStudis];
System.out.println();
System.out.println("* Eingabe der Namen");
for (int i = 1; i < namen.length; i = i + 1) {
System.out.print("Name des " + (i) + ". Studis: ");
namen[namen.length - i] = Eingabe.stringEinlesen();
anzStudis++;
}
System.out.println();
System.out.println("* Liste der Studis");
for (int i = 0; i <= anzStudis; i += 1) {
System.out.println(namen);
}
}
}
Sorry für den ellen langen Text und vielen Dank für jede Hilfe!!!
ich hänge derzeit echt auf dem Schlauch.
Ich habe einen Code in dem 3 oder 4 Fehler (muss man herausfinden) versteckt sind.
Ich verstehe aber echt nicht was da schief läuft.
Damit ihr mir das nicht vorsagt und ich es selber verstehen möchte, würde ich das gerne kooperativ oder mit Erklärungen lösen.
Wenn ich den Code ausführe mit der Anzahl 3 beim Wert den man eingeben kann, dann kommt der Fehler:
java.lang.ArrayIndexOutOfBoundsException: 3
at FehlerhafteListeStudis.main(FehlerhafteListeStudis.java:36)
Ich würde gern versuchen den Code in Worte zu schreiben, damit ihr mich verbessern könnt, falls ich etwas falsch verstehe. Ich möchte es wirklich verstehen und es ist auch simpel, jedoch stehe ich noch ganz am Anfang mit Java daher Sorry, falls ich es nicht direkt verstehe.
Was ich schon mal verstehe, wir geben ein wie viele Studenten es gibt per intEingabe.
Wir wollen ein String Array und die länge soll die anschließende int Eingabe sein.
Dann ein 2 Prints. Und eine For Schleife.
Ich weiß, dass ein Array bei dem Index 0 beginnt. Die For Schleife fängt hier jedoch bei 1 an.
Ist das legitim?
Sie wird so lange ausgeführt, bis i größer ist, als die Anzahl der Objekte im namen Array richtig?
Es wird immer +1 hinzugefügt.
Dann ein Print ausdruck jedoch bin ich mir nicht ganz sicher ob ich das darauffolgende richtig verstehe?
Im NamenArray wird die Anzahl der Objekte im namenArray - 1 gerechnet, sobald man einen Namen eingibt.
Aber was mach das anzStudis++? Erhöht es die Anzahl der Objekte im new String[anzStudis]??
Danach kommen wieder 2 Prints und eine For Schleife.
Diese fängt bei 0 an. Ist das schon einer der Fehler?
Weil die erste for Schleife bei 1 und die 2te bei 0 anfängt?
Die Schleife geht so lange wie i kleiner/gleich anzStudis ist. Und wird auch immer um +1 erhöht. Am Ende wirds geprinted.
Der Fehler java.lang.ArrayIndexOutOfBoundsException: 3, der erscheint, wenn ich 3 am Anfang bei der intEingabe erscheint ist mir relativ schlüssig. Nach dem ich dann 2 Namen eingebe kommt die Fehlermeldung.
Wenn ich in die intEingabe 2 Eingebe, kommt der Fehler schon nach einem Namen.
Also scheint da was mit dem Zählen nicht zustimmen.
Scheint ja so als wenn Java den ersten oder zweiten Index des Arrays überspringt bzw an einem falschen Startwert anfängt und somit außerhalb der Range des Arrays kommt.
Könnte das sein?
public class FehlerhafteListeStudis {
public static void main(String[] args) {
System.out.println("-- StudiVerwaltung --");
System.out.println();
System.out.print("Anzahl Studis? ");
int anzStudis = Eingabe.intEinlesen();
String[] namen = new String[anzStudis];
System.out.println();
System.out.println("* Eingabe der Namen");
for (int i = 1; i < namen.length; i = i + 1) {
System.out.print("Name des " + (i) + ". Studis: ");
namen[namen.length - i] = Eingabe.stringEinlesen();
anzStudis++;
}
System.out.println();
System.out.println("* Liste der Studis");
for (int i = 0; i <= anzStudis; i += 1) {
System.out.println(namen);
}
}
}
Sorry für den ellen langen Text und vielen Dank für jede Hilfe!!!