ich versuche mich gerade an einem Vektorrechner. Die Rechnung für die Multiplikation habe ich in einer Hilfsmethode, die spielt hier aber auch keine Rolle denke ich. Die Idee ist, die Usereingabe nach der Faktor- und Ebenenvektoreingabe zu beenden und den Spaß mit Hilfe der ausgelagerten Methode zu berechnen und zu printen. Doch leider bekomme ich die Fehlermeldung "Index 1 out of bounds for length 1". Vielleicht kann mir jemand weiterhelfen^^
Java:
publicstaticvoidvectorCalc(){double[] vec =newdouble[1];double factor =Terminal.readDouble("Faktor ");for(int i =0; i <10; i++){
vec [i]=Terminal.readDouble("Zahl ");}System.out.println(mult(vec, factor));}
Erstellst du ein Array mit der festen Länge von 1.
In der schleife versuchst du ab dem zweiten Durchgang elemente anzusprechen, die die Länge des Arrays überschreiten.
Java:
vec [0]=Terminal.readDouble("Zahl ");//alles Ok
vec [1]=Terminal.readDouble("Zahl ");//Nicht ok weil Länge des Array = 1
Erstellst du ein Array mit der festen Länge von 1.
In der schleife versuchst du ab dem zweiten Durchgang elemente anzusprechen, die die Länge des Arrays überschreiten.
Java:
vec [0]=Terminal.readDouble("Zahl ");//alles Ok
vec [1]=Terminal.readDouble("Zahl ");//Nicht ok weil Länge des Array = 1
Vielen Dank. Verstehe ich das richtig, dass wenn new double [2] ist, dass ich dann auch nur 2 und nicht 3 Werte in diesem Array speichern kann, obwohl Arrays ab Position 0 beginnen? Das war wohl mein Denkfehler, hier noch einmal der fertige Code.
Verstehe ich das richtig, dass wenn new double [2] ist, dass ich dann auch nur 2 und nicht 3 Werte in diesem Array speichern kann, obwohl Arrays ab Position 0 beginnen?
Ja genau.
Wenn du in einer for Schleife das Array durchlaufst würde ich dir noch raten die Array länge abzufragen.
Mitt .length bekommst du die größe des Arrays.
Also statt
Java:
for(int i =0; i <=1; i++)
nimmst du
Java:
for(int i =0; i < vec.length; i++)
Das verhindert einfach solche Fehler und solltest du mal die größe des Arrays ändern, läuft die for schleife immer noch korrekt