我想讀喜歡的用戶輸入:11 12 13 14 15 16Java的掃描儀 - 無法讀取用戶輸入
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(sc.next());
}
System.out.println("Test");
,但較新的熄滅而循環並打印「測試」的。 我怎麼讀取輸入?
我想讀喜歡的用戶輸入:11 12 13 14 15 16Java的掃描儀 - 無法讀取用戶輸入
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(sc.next());
}
System.out.println("Test");
,但較新的熄滅而循環並打印「測試」的。 我怎麼讀取輸入?
您可以根據您是否要退出而斷開循環E.g.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String next = sc.next();
if (next.equals("q")) { //if user press q then break the loop
break;
}
System.out.println(next);
}
System.out.println("Test");
}
使用的API,如:
while(sc.hasNextInt()){
int aba= sc.nextInt();
if (aba == 0) {//or even non numeric value here would let this loop exit
break;
}
}
所以,你需要輸入0,甚至在其他的方式輸入非數值序來循環出來。 nextLine方法只會讀整行一次,然後你需要解析它,然後轉換爲整數,所以最好使用sc.nextInt,它將爲你完成工作。
hasNext()
工作原理是這樣的方法:
通常情況下,如果你使用Scanner
的文件,這樣的循環將正常工作,因爲文件中有一個明確的結束,它通常不會停留在等待更多的輸入。
但是,當您使用控制檯輸入(System.in
,未重定向)時,通常用戶不會發送文件結束信號。他只是按返回,所以,hasNext()
坐在並等待,看看用戶是否會在下一行輸入更多的輸入,等等。
一般有兩種方式來處理這個:
用戶有實際終止輸入。完成輸入你的號碼,然後按回車後,您還需要發送結束文件中的順序,通常是CTRLd或CTRLž。
如果你這樣做,你將無法再輸入該程序的任何輸入。
該程序告訴用戶輸入一些特定的值,告訴它輸入結束。例如,字符串「完成」。當你這樣做,你必須將循環更改爲類似:
String nextInput;
while(sc.hasNext() && ! (nextInput = sc.next()).equals("DONE")){
System.out.println(nextInput);
}
你迫切的輸入,經過進入? – FlyingPiMonster
是的,我是..它打印出sc。下一步(),但只是停止,並沒有離開while循環打印測試 –
你不會走出這個循環,沒有使用某個「終止」代碼字。 'System.in'總是要求更多的輸入,因此'sc.hasNext()'總是爲真。 – Tom