扫描仪缓冲区未清除

时间:2014-11-27 14:43:25

标签: java input while-loop

我写这段代码要运行三次。每当用户输入一个非整数值时,内部就会中断。

while(i<=2)
        {
            total=0;
            numOfint=0;
            while (true)
                {

                    System.out.print("Please enter an integer");
                    if(!in.hasNextInt())
                    {break;}
                    else
                    {
                    total+=in.nextInt();
                    numOfint+=1;
                    }
                }
            avg[i]=new Average();
            avg[i].numb_ints=numOfint;
            avg[i].total_ints=total;
            System.out.println("Stats for average "+i+". Number of ints : "+avg[i].numb_ints+" Total : "+avg[i].total_ints+" Average: "+avg[i].avg_ints());
            i++;
        }

问题是它只运行一次。第二次它只是跳过内部while循环。我认为扫描仪缓冲区中有一个非整数值,它没有清除。请帮助我。

1 个答案:

答案 0 :(得分:1)

一旦你输入NAN,它将打破所有其余的,缓冲区中没有nextint, 尝试下一个扫描仪,试试这个:

if(!in.hasNextInt()){
String tmp=in.next();
break;
}