Hallo!
Ich habe einen Scanner:
Außerdem verwende ich
Nun soll der Benutzer nur Zahlen > 0 eingeben können, zb "4532". Eingaben wie "a436" kann ich durch obige Funktion verhindern.
Nun wollte ich verhindern, dass der Benutzer zb. "45 32" eingibt. Dann da würde hasNextInt() true zurückgeben (für 45). Diese Eingabe wertet der Scanner nämlich irgendwie als zwei einzeln eingegebene Zahlen "45" und "32".
Deshalb wollte ich erst mit "hasNextInt()" checken, ob zumindest schon mal die erste Eingabe eine Zahl ist. Dann wird diese erste Zahl (von "45 32", also "45") mit "nextInt()" geschnappt und aus dem Input entfernt (?). Dann wird mit "hasNext()" gecheckt, ob nach der ersten Zahl noch eine Eingabe kommt (in unserm Fall, wäre das der Fall, nämlich "32"). wenn dem so ist, bricht das Programm ab, ansonsten ist alles mit der Einagbe ok.
Nur wenn ich das so mache und der Benuter zB. "67" eingibt, dann klappt das nicht. Denn er checkt erst "67" obs ne Zahl ist, liest dann "67" mit nextInt() ein und check dann noch mit "hasNext()". Es gibt aber keinen weiteren Input und aus irgendeinem Grund erwartet dann "hasNext()" eine weitere Eingabe, anstatt "false" zu sagen....
kann mir jemand, helfen, wie ich dieses Problem lösen kann? Wenn es keinen weiteren Input gibt, soll hasNext() false zurück geben und nicht noch einen Input erwarten und auf diesen warten...
Ich habe einen Scanner:
Code:
tastatur = new Scanner(System.in);
tastatur.hasNextInt()
Nun soll der Benutzer nur Zahlen > 0 eingeben können, zb "4532". Eingaben wie "a436" kann ich durch obige Funktion verhindern.
Nun wollte ich verhindern, dass der Benutzer zb. "45 32" eingibt. Dann da würde hasNextInt() true zurückgeben (für 45). Diese Eingabe wertet der Scanner nämlich irgendwie als zwei einzeln eingegebene Zahlen "45" und "32".
Deshalb wollte ich erst mit "hasNextInt()" checken, ob zumindest schon mal die erste Eingabe eine Zahl ist. Dann wird diese erste Zahl (von "45 32", also "45") mit "nextInt()" geschnappt und aus dem Input entfernt (?). Dann wird mit "hasNext()" gecheckt, ob nach der ersten Zahl noch eine Eingabe kommt (in unserm Fall, wäre das der Fall, nämlich "32"). wenn dem so ist, bricht das Programm ab, ansonsten ist alles mit der Einagbe ok.
Nur wenn ich das so mache und der Benuter zB. "67" eingibt, dann klappt das nicht. Denn er checkt erst "67" obs ne Zahl ist, liest dann "67" mit nextInt() ein und check dann noch mit "hasNext()". Es gibt aber keinen weiteren Input und aus irgendeinem Grund erwartet dann "hasNext()" eine weitere Eingabe, anstatt "false" zu sagen....
Code:
do {
System.out.println("Geben sie bitte die Laenge (einen positive ganze Zahl) von dem grossen Feld ein.");
tastatur = new Scanner(System.in);
if (tastatur.hasNextInt()) {
speicher = tastatur.nextInt();
}
if (!(tastatur.hasNext())) {
if (speicher > 0 ) {
laengeF1 = speicher;
}
}
} while (laengeF1 == 0);
kann mir jemand, helfen, wie ich dieses Problem lösen kann? Wenn es keinen weiteren Input gibt, soll hasNext() false zurück geben und nicht noch einen Input erwarten und auf diesen warten...