当以字符串作为输入运行此代码时,如果发生错误,则会导致错误消息的无限循环。我试过插入休息;在错误消息之后,它会停止循环但也会停止程序。我希望它在发生错误后循环回输入请求。
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();
}
}
答案 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()
当然会在下一次迭代中成立,因为“队列”中仍然存在非双重值。