hab folgendes problem: ich will mit BufferedReader ein Array mit Zahlen füllen, dazu soll der user die länge festlegen
und dann die zahlen, und hier das wichtige, aufsteigend eintippen.
habe mir das so vorgestellt:
Java:
array[0]=Integer.parseInt(in.readLine());for(int i =1; i < array.length && array[i]> array[i-1]; i++){
array[i]=Integer.parseInt(in.readLine());}
innerhalb eines try catch blocks.
aber irgendwie wird nur die erste zahl eingelesen und die for schleife vom bufferedreader ignoriert??
hier liegt der Fehler. Bröseln wir es auf: 1 < 1 ist die Abfrage beim Anfang der Schleife und die ist natürlich nicht wahr!
Prüfe nach
Java:
i <= array.length
Außerdem bin ich mir bei deiner zweiten Bedingung, die auch wahr sein muss, sehr unsicher, ob das so funktioniert, da du bei der ersten Prüfung dort nichts im Array hast, womit es einen Vergleich anstellen kann, müsstest aber testen.
hier liegt der Fehler. Bröseln wir es auf: 1 < 1 ist die Abfrage beim Anfang der Schleife und die ist natürlich nicht wahr!
Prüfe nach
Java:
i <= array.length
Außerdem bin ich mir bei deiner zweiten Bedingung, die auch wahr sein muss, sehr unsicher, ob das so funktioniert, da du bei der ersten Prüfung dort nichts im Array hast, womit es einen Vergleich anstellen kann, müsstest aber testen.
Das stimmt so nicht. Der Index des letzten Array-Elementes ist array.length() - 1. Mit der Überprüfung sollte eine Index out of Bounds Exception entstehen.
Der Fehler liegt wohl eher in der zweiten Bedingung.
Der Standardwert eines Feldes ist 0. Du überprüfst, ob der Weld im vorigen Feld kleiner als der Wert im Feld mit dem Index i ist. Ich gehe davon aus, dass du bei deinen Eingaben nur Zahlen >= 0 genommen hast - somit trifft die Bedingung nicht zu.
Code:
array[i-1] ist deine (erste) Eingabe und wahrscheinlich >= 0
array[i] hat noch keinen Wert zugewiesen bekommen und hat somit den Wert 0
danke für eure hilfe jetzt hab ichs richtig implementiert:
Java:
int i =0;
array[i]=Integer.parseInt(in.readLine());
i++;while(i < array.length){
array[i]=Integer.parseInt(in.readLine());if(array[i-1]< array[i]){
i++;}else{System.out.println("numbers not in right order");Exception e;}}
wie schon erwähnt ist am anfang der wert ohne initialisierung 0, deshalb die if abfrage im while block:applaus: