错误消息第一次打印两次

时间:2013-09-09 19:44:23

标签: java duplicates

我正在使用以下代码向用户询问其英尺和英寸的高度,如果用户的输入不是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:

此错误仅在用户第一次输入除整数之外的其他内容时发生。 我怎么能摆脱这个?

2 个答案:

答案 0 :(得分:0)

如果脚的使用else工作正常,为什么不再用它来换英寸?

if(!input.hasNextInt())更改为else可以解决问题。

答案 1 :(得分:0)

nextInt方法在整数后不使用\n字符。

在第二个循环中,当hasNextInt为false时,它会读取一行。该行将为空,因为它正在从上次读取最终\n

在循环的第二次迭代中,它会读取您输入的最后一行,并再次显示错误。

修复方法是始终使用nextLine()并使用Integer.parseInt(String);来获取整数。 hasNextInt()应该仍然可以正常工作。