当我输入int第一个程序检查并赋值但不打印时,下一个int我输入它打印但输入第一个值。如果value是string,则再次询问,但不将值赋给number。如何解决这个问题?先谢谢你。
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
1条答案
按热度按时间qyyhg6bp1#
不要把nextline和nextanything混为一谈。如果你想读整行,使用
.next()
,并更新扫描仪的分隔符:scanner.useDelimiter("\r?\n");
-按你的方式操作意味着,如果用户使用了你键盘上最大的键,你的应用程序就会崩溃。你应该把它放在一个实用的方法里。
不要使用
.hasNextInt()
在你的情况下。如果用户输入非数字,则返回false。如果输入正确的话,就把它变成真的,然后跳出循环。请注意kb.hasNextInt
将冻结(等待)直到用户输入某个内容。毕竟,只要用户没有输入其他令牌,scanner怎么可能告诉您它是否是int?