我无法运行代码

时间:2014-12-28 23:52:06

标签: java do-while

我试图创建一个简单的输入和do-while程序,我要求代码在用户没有输入3.14时继续重复,但由于某种原因它运行不正常。它输入时没有显示错误。

Scanner num = new Scanner(System.in);
double pi = num.nextDouble();
do {
    System.out.println("What is pi?");
    pi = num.nextDouble();
}
while( pi != 3.14);
System.out.println("Yup pi = 3.14");

3 个答案:

答案 0 :(得分:1)

您要求在循环之前输入而不通知用户,然后取出第一个扫描仪。 像这样

Scanner num = new Scanner(System.in);
double pi = 0.0;
do {
    System.out.println("What is pi?");
    pi = num.nextDouble();
}
while( pi != 3.14);

System.out.println("Yup pi = 3.14");

答案 1 :(得分:1)

您正在阅读pi两次,一次在第2行,一次在第5行。您只需在第2行声明pi,您的代码就可以使用(见下文)。因为do-while循环的主体总是运行一次,你只需要一行询问。如果你只使用了一个基本的while循环,你需要有两行。

Scanner num = new Scanner(System.in);
double pi;
do {
    System.out.println("What is pi?");
    pi = num.nextDouble();
} while(pi != 3.14);

System.out.println("Yup pi = 3.14");

答案 2 :(得分:0)

这可能与比较浮标完全不好的事实有关。相反,使用这样的东西:

if(Math.abs(pi - (double) 3.14) < epsilon)

其中epsilon是一个调节精度的数字(在这种情况下,0.001之类的东西就足够了)。有关详情,请参阅此处:What's wrong with using == to compare floats in Java?