2017-02-22 155 views
-1

基本上,我希望用户能够输入一个十进制数,然后按照他们想要的次数重复提示,直到他们输入数字零来退出循环。 rp是双数据类型。不过,我得到,指出“双不能转换为boolean”如何在输入0时结束(双数据类型)输入循环?

while (true){ 
    rp = Double.parseDouble(JOptionPane.showInputDialog("Enter in double:")); 
    if (rp = 0.0){ 
     break; 
    } 
} 
+3

Typo。 'rp == 0.0';一个'='是赋值,然后求值到右边的值。 –

+1

更改为'if(rp == 0.0)' – shmosel

+0

有些人更喜欢编写'if(0.0 == rp)',因为如果你写错了一个等号'=',它会给出一个错误信息而不是一个警告。 – AntonH

回答

1

可以使用do..while循环与!=作为比较操作(而不是==是赋值运算符)的错误,例如:

double rp; 
do{ 
rp = Double.parseDouble(JOptionPane.showInputDialog("Enter in double:")); 
//process 
}while(rp != 0.0); 
+0

请注意,Double类具有可用于比较的.equals()方法。 –

+4

我知道,但是OP在这里使用'double',所以'equals'不适用,除非我们将其加上。 –

1

在if语句中,您创建了一个assignement。

您应该改为写if (rp == 0.0)

+0

这是一个简短的答案,但它绝对是答案,而不是评论。 –

1

正如大家在他们的评论中提到的那样,您在if语句表达式中意外犯了一个错误。

下面的解决方案通过使用相等运算符而不是赋值运算符来解决您的问题。

while (true){ 
rp = Double.parseDouble(JOptionPane.showInputDialog("Enter in double:")); 
if (rp == 0.0){ // double equals for checking equality 
    break; 
} 
}