2017-02-10 10 views
-1
while(sc.hasNextInt()){         
    int i = sc.nextInt(); 
    innerArr.add(i);   
} 

Ich habe einen Scanner namens "sc", der den Eingang aufnimmt. Ich würde gerne "1 2 3 4 5" gefolgt von "Enter" eingeben können. Dadurch wird mein Code aus der while-Schleife ausbrechen und die anderen Codes weiter unten ausführen. Wenn ich jedoch "1 2 3 4 5" und "Enter" eintippe, bricht mein Code nicht aus der Schleife. Es bricht erst aus, wenn ich etwas wie "1 2 3 4 5 a" eintippe. Wie repariere ich das?Werte vom Scanner einlesen, bis ich auf Enter klicke

+1

Sie könnten [in einer Zeile lesen] (http://docs.oracle.com/javase /7/docs/api/java/util/Scanner.html#nextLine()) von Ihrem Scanner und dann [Teilen] (https://docs.oracle.com/javase/7/docs/api/java/lang/ String.html # split (java.lang.String)) es. – khelwood

Antwort

0

Da hasNextInt() und nextInt() das Trennzeichen von Ihnen verstecken (das, was Scanner ist tun sollten) Ihren Code nicht in der Lage sein, den Unterschied zwischen Endbenutzers drücken Geben Sie zwischen den Zahlen vs. Raum zu erzählen.

Sie können jedoch nextLine(), lesen und wandeln es in ein Array von int s in einem Rutsch:

var line = sc.nextLine(); 
int[] innerArr = Arrays.stream(line.split(" ")).mapToInt(Integer::parseInt).toArray(); 
Verwandte Themen