2012-10-06 22 views
0

我從我的數據庫中提取列值(它工作正常),然後我將這些值一次一個地放入'字符串X'中循環。在同一個循環中,我想比較用戶通過UI使用X提供給我的值,並基於此比較,我希望x爲真或假。但x總是表現真實!這裏是我的代碼:字符串比較不按預期工作。我想比較兩個字符串值,但比較似乎總是給出一個真實的結果

private boolean fillData() { 
     Cursor c = DBHelper.fetchAllIDs(); 
     // List<String> idList = new ArrayList<String>(); 
     if (c.moveToFirst()) { 
     do { 
      String X = (c.getString(c.getColumnIndexOrThrow("IDno"))); 
      Toast.makeText(getApplicationContext(), "" +X, Toast.LENGTH_LONG).show(); 
      String B = null; 
      B = Idno.getText().toString(); 
      if (B.equals(X)); 
      { 
       Toast.makeText(getApplicationContext(), "If condition true"+B, Toast.LENGTH_LONG).show(); 
       x=true; 
      } 
     } while (c.moveToNext()); 


     } 
    return x; 
    } 
+0

我認爲你設置x的默認值是true –

+0

不,我在開始時聲明x爲false。 –

+0

將x聲明爲局部變量,如果它是全局的,它將保持其先前的值。在x = true之後也會中斷。 – auselen

回答

0

我得到了這個人,我錯誤地把';'在我的if語句結尾。抱歉!愚蠢!

0

嘗試打印的

String X = (c.getString(c.getColumnIndexOrThrow("IDno"))); 

值如燮(x)或內部日誌。

和相同方式進行打印

B = Idno.getText().toString(); 

Sop的(B)的值或內部日誌(B)。

它可能在意義上是相同的,但在目前是不同的(區分大小寫)。

使用

if(B.equalsIgnoreCase(X)) 
{ 
} 

代替if (B.equals(X));

不要把condition termination symbol;在if語句的結束。

+0

謝謝你的伴侶,我明白這要歸功於休息;聲明想法auselen –

+0

歡迎您。 – subodh