K想比較兩個字符串,但equals()
方法總是返回true,所以if語句總是運行。爲什麼會發生?String.equals()總是返回true
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString));
{
rowView.setBackgroundResource(R.color.listselect_red);
}
K想比較兩個字符串,但equals()
方法總是返回true,所以if語句總是運行。爲什麼會發生?String.equals()總是返回true
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString));
{
rowView.setBackgroundResource(R.color.listselect_red);
}
if(CompleteString.equals(resultString));
< - 刪除;
你的代碼是等價於:
if(CompleteString.equals(resultString))
{
//empty block
}
{
rowView.setBackgroundResource(R.color.listselect_red);
}
所以,如果等於返回true,則空塊將被執行,而第二塊之後將是總是執行任何如果是false
或true
。
刪除if語句後的;
。
if(CompleteString.equals(resultString))
{
rowView.setBackgroundResource(R.color.listselect_red);
}
從if(CompleteString.equals(resultString));
;
除去;
裝置語句的端部,從而即使在if()
環returns
false
或true
所有語句本if()
之後將executed.So rowView.setBackgroundResource(R.color.listselect_red);
將被執行的所有的時間。
嘗試這種方式
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString))// removed `;`
{
rowView.setBackgroundResource(R.color.listselect_red);
}
這是因爲 ';'在if的結尾。只要刪除,它會工作!
if(CompleteString.equals(resultString));
塊,如果它看起來像一個空的條件:)它不會進入
這是因爲分號的,如果條件..
正確的代碼
resultString = "Test1";
String CompleteString = "Test";
if(CompleteString.equals(resultString))
{
rowView.setBackgroundResource(R.color.listselect_red);
}
它爲我工作.... !!! – 2013-12-14 11:08:49
謝謝,我沒有看到!有時候犯這樣一個愚蠢的錯誤讓我很生氣 – Memento
我犯了錯誤,因爲我沒有看到那個分號,有時會發生,但我不明白downvote?這些網站提出了這樣的問題,其中一些難以解決,其中一些很容易! – Memento