发生错误时的无限循环

时间:2013-09-24 13:41:58

标签: java

当以字符串作为输入运行此代码时,如果发生错误,则会导致错误消息的无限循环。我试过插入休息;在错误消息之后,它会停止循环但也会停止程序。我希望它在发生错误后循环回输入请求。

import java.util.Scanner;

public class CubeUser                           
{                                               

    public static void main(String argv[])      
    {
        Scanner in = new Scanner(System.in);
        boolean error = true;
        System.out.print("Please input the length of the cube:");                               
        while(error == true)
        {
            if (in.hasNextDouble())
            {
                double length = in.nextDouble();
                Cube cube1 = new Cube(length);                                                          
                System.out.println("The surface area of cube1 is " + cube1.calculateSurfArea() );       
                System.out.println("The volume of cube1 is " + cube1.calculateVolume() );
                error = false;
            }
            else
            {
                System.out.println("Please enter a numerical value for the cube's length.");
            }
        }
        in.close(); 

    }  
}   

3 个答案:

答案 0 :(得分:2)

移动扫描仪的光标以防错误,否则它将继续读取相同的值。

else {
     System.out.println("Please enter a numerical value for the cube's length.");
     in.next();
}

注意:使用if(error)代替(error == true)。后来有点不满意。

答案 1 :(得分:1)

if (in.hasNextDouble())

这将在用户输入时第一次触发。但是当出现错误时,它不会给用户输入double值的机会,因此无限循环

重构你的循环:

String input;
while((input = in.nextDouble()) != null)
{
    // Force the user to type a value.
    // The rest of your code here.
}

答案 2 :(得分:0)

如果输入不是双重输入,则必须使用例如输入in.next(),否则,in.nextDouble()当然会在下一次迭代中成立,因为“队列”中仍然存在非双重值。