2012-10-13 81 views
2
public void check() { 
    if (particle < 0) { 
     if (point[3].equals(point[3]) == true) { 
      check = true; 
     } 
     check = false; 
    } 
} 

不應該point[3]等於自己嗎?使它成爲現實?爲什麼這不是真的?

+2

嘗試:'檢查=(p3.equals(P3));'爲您節省一些if的! –

+0

不要做'if(condition == true)'。它與'if(condition)'相同! –

+0

@RudolfMühlbauer相信或不相信,但有些人認爲'method()== true)/ * blah blah * /'a *好的軟件工程實踐*來指示'method()'的返回類型。儘管我強烈反對,但我已將其視爲項目編碼標準的一部分。是的,一個Java項目:/ – toniedzwiedz

回答

2

您必須在功能check = true;之後返回,或使用else。否則,它會掉下來的,如果return false下來,總是

if (...) { 
    check = true; 
} 
else { 
    check = false; 
} 

public void check(){ 
    if(particle < 0){ 
     if(point[3].equals(point[3]) == true){ 
      check = true; 
     }else{ 
      check = false; 
     } 
    } 

}

+0

什麼?對不起,我只是開始:L – user1610541

+0

我相信'else'在這裏比在回報中更具可讀性。而'check = p3.equals(p3);'會更好。只要我們認爲這樣的情況值得檢查。 – toniedzwiedz

+0

@ user1610541代碼中發生了什麼,它首先檢查粒子是否小於0,然後檢查點[3] .equals(點[3])。如果是,則檢查等於真。那麼在那之後,檢查等於假,因爲即使它在邏輯上是正確的,這裏也有一個副作用現象,它將檢查的值改變爲假。這就是它總是返回錯誤的原因。從函數返回或使用else {}語句時,「check」的邏輯更改爲true,並從check()函數返回。 –

0

怎麼樣顆粒?

按照約定點應該與自己相等,但是您可以始終使用它。

當然的,但是,其他的回答是正確的,這個功能將始終檢查結束=假

2

也許你的意思是說別的檢查=假?

public void check(){ 
    if(particle < 0){ 
     if(point[3].equals(point[3]) == true){ 
     check = true; 
     }else{ 
      check = false; 
     } 
    } 
    //here it is true 
    } 

或者乾脆:

public void check(){ 
    if(particle < 0){ 
     check = point[3].equals(point[3]); 
    } 
    //here it is true 
} 
1

試試這個:

public boolean check() { 
    if (particle < 0) { 
     return point[3].equals(point[3]); 
    } else { 
     return false; 
    } 
} 
+0

結果與問題中不一樣:返回值被改變,變量'check'僅在原始代碼中'particle> = 0'時被設置。 –

相關問題