2015-02-06 328 views
-3

我寫了一行總共加起來的總價值是否可以在「if()」中包含=號?

int totalValue = value1 + value2 + value3; 

現在我想用一個if語句來寫if (totalValue = 200);但它給了我一個錯誤說「無法從一個int轉換爲布爾類型」 。

我應該怎麼做,因爲我想用else if(); System.out.println();

+2

'='是一個賦值運算符,而不是比較運算符。 – lared 2015-02-06 00:54:04

+5

'if(totalValue == 200)'又如何去掉';'呢? – Reimeus 2015-02-06 00:54:13

+0

謝謝你們! – 2015-02-06 00:58:36

回答

8
if (totalValue == 200) 

=是分配值有四種可能的結果,==是比較值。

1

Java中的=運算符只能分配;你想比較totalValue到200,所以你應該使用==比較運算符。

if(totalValue = 200){ 
    ... 
} 

請注意,你不應該有一個if語句後一個分號,因爲那麼Java將基本忽略if

0

如果您編寫if(totalValue = 19),它會評估您是否可以成功地將19賦給totalValue。

成功與否,在Java中是一個布爾值,所以它期望評估布爾值。 表達:

if((totalValue = 19) == True){ ... } 

是正確的,但也沒用,在這種情況下,因爲它幾乎肯定成功賦值

如果你想只檢查值必須使用==

+0

'true'在Java中拼寫爲小寫字母t。 – 2015-02-06 01:26:24

0

是的,但平等爲==,作業爲=。此外,請不要用分號結尾您的if聲明,也不要終止if的正文。

// if (totalValue = 200); 
if (totalValue == 200) { 
    // Do stuff for when the value is 200 
} else { 
    // Do stuff when the value is not 200 
} 
0

像其他人說的那樣,Java中的'='操作符用於分配值。然而(可能有點偏離主題),賦值本身的計算結果爲賦值,可以在布爾表達式中重用。

這可以在這個循環中,其中的readLine的結果被存儲,並與空在單個表達式中使用,如:

int value; 
while ((value = reader.read()) != -1) { 
    doSomething(value);   
} 
1

=符號是賦值運算符。

if(totalValue = 200)實際上將200分配給totalValue。

你需要的是==操作符

if(totalValue == 200) 
{ 
System.out.println("200"); 
} 
else if (totalValue == 100) 
{ 
System.out.println("100"); 
} //... 

把線路終端在當年底(總價值== 200); 將終止條件語句。這意味着它下面的語句不僅會在條件評估爲真時執行。

另外,我認爲總是在if()之後放一個語句以防止問題出現在範圍之內是一種很好的做法。這裏有一個鏈接來展示如何發生(並阻止)https://stackoverflow.com/questions/21999473/apples-goto-fail-security-bug

相關問題