我在下面編寫的程序被設計爲如果用戶在提示時沒有輸入整數,程序將循環直到它們出現。這適用於初始檢查,但第二次檢查不起作用。代碼如下:使用嵌套的while循環確保類型安全輸入
import java.util.Scanner;
public class SafeInput
{
public static void main(String[]args)
{
System.out.println("Please enter any integer. If you want to exit, enter -1>");
Scanner scan = new Scanner(System.in);
while(!scan.hasNextInt())
{
String garbage = scan.nextLine();
System.out.println("You've entered garbage.");
}
int input = scan.nextInt();
while(input != -1)
{
System.out.println("\nYou entered: "+input);
System.out.println("Please enter any integer. If you want to exit, enter -1>");
while(!scan.hasNextInt())
{
System.out.println("You've entered garbage.");
String garbage1 = scan.nextLine();
}
input = scan.nextInt();
}
System.out.println("-1 entered. Goodbye");
}
}
這裏是當我執行該程序會發生什麼:
Please enter any integer. If you want to exit, enter -1>
this is a string
You've entered garbage.
1
You entered: 1
Please enter any integer. If you want to exit, enter -1>
2
You entered: 2
Please enter any integer. If you want to exit, enter -1>
this is also a string
You've entered garbage.
You've entered garbage.
string
You've entered garbage.
1
You entered: 1
Please enter any integer. If you want to exit, enter -1>
2
You entered: 2
Please enter any integer. If you want to exit, enter -1>
-1
-1 entered. Goodbye
爲什麼,當我失敗的第二次檢查一個整數,該程序的輸出:
You've entered garbage.
You've entered garbage.
相反的:
You've entered garbage.
謝謝!
這很完美!謝謝!但是,爲什麼這個工作呢?這是如何解決問題的? –
請參閱http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next-nextint-or-other-nextfoo-methods,並解釋scan.nextLine()在scan.NextInt () – Heshan