当我输入 int 第一个程序检查并分配值但不打印时,下一个 int 我输入它确实打印但输入了第一个值。如果值为字符串,则再次询问但不将值分配给数字。我该如何解决这个问题?提前致谢。
public static void main(String[] args) {
int number = 0;
Scanner kb = new Scanner(System.in);
do {
try {
System.out.println("Enter a number: ");
number = kb.nextInt();
} catch (Exception e) {
System.out.println("Not a number!");
kb.nextLine();
}
} while (!kb.hasNextInt());
System.out.println(number);
}
输出
Enter a number: ab
Not a number!
5
Number: 0
答案 0 :(得分:1)
不要将 nextLine 和 nextAnything 混用。如果您想阅读整行,请使用 .next()
,并更新您的扫描仪的分隔符:scanner.useDelimiter("\r?\n");
- 按照您的方式进行意味着,如果用户使用键盘上最大的键,您的应用程序就会中断。>
你或许应该把它放在一个实用方法中。
不要在 while 条件中使用 .hasNextInt()
。如果用户输入非数字,则返回 false。只要让它为真,如果输入正确就跳出循环。请注意,kb.hasNextInt
将冻结(等待)直到用户输入内容。毕竟,只要用户没有输入另一个令牌,扫描仪怎么可能告诉你它是不是一个整数?