2017-02-22 151 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; 
} 
}