我正在使用以下代码向用户询问其英尺和英寸的高度,如果用户的输入不是int,则返回错误消息:
loop = true;
while(loop){
if(input.hasNextInt()){
feet = input.nextInt();
loop = false;
break;
}
else{
System.out.println("Invalid input, please enter an integer.");
System.out.print("Feet: ");
input.nextLine();
}
}
loop = true;
System.out.print("Inches: ");
while(loop){
if(input.hasNextInt()){
inches = input.nextInt();
loop = false;
break;
}
if(!input.hasNextInt()){
System.out.println("Invalid input, please enter an integer.");
System.out.print("Inches: ");
input.nextLine();
}
}
程序返回脚的错误信息完全正常:
Feet: f
Invalid input, please enter an integer.
Feet:
但是第一次返回英寸的错误消息时,它会返回两次:
Inches: f
Invalid input, please enter an integer.
Inches: Invalid input, please enter an integer.
Inches:
此错误仅在用户第一次输入除整数之外的其他内容时发生。 我怎么能摆脱这个?
答案 0 :(得分:0)
如果脚的使用else
工作正常,为什么不再用它来换英寸?
将if(!input.hasNextInt())
更改为else
可以解决问题。
答案 1 :(得分:0)
nextInt
方法在整数后不使用\n
字符。
在第二个循环中,当hasNextInt
为false时,它会读取一行。该行将为空,因为它正在从上次读取最终\n
。
在循环的第二次迭代中,它会读取您输入的最后一行,并再次显示错误。
修复方法是始终使用nextLine()
并使用Integer.parseInt(String);
来获取整数。 hasNextInt()
应该仍然可以正常工作。