2016-11-08 185 views
1

我正在嘗試爲Android應用程序在頁面中進行登錄。我的團隊負責人已決定使用web服務進行此操作。String.equals()總是返回false?

每當在使用日誌,發送請求,以3層可能的反應:

0: Wrong Password 
20: Wrong username 
otherwise: a UUID 

我試圖驗證還給由Web服務這樣的結果:

String resultString = result.toString(); 
    if (resultString.equals("20")) { 
     Toast.makeText(getBaseContext(), "Het ingevulde emailadres klopt niet!", Toast.LENGTH_LONG).show(); 
     return; 
    } else if (resultString.equals("0")) { 
     Toast.makeText(getBaseContext(), "Het ingevulde wachtwoord klopt niet!", Toast.LENGTH_LONG).show(); 
     return; 
    } else { 
     Toast.makeText(getBaseContext(), "Debug, klopt", Toast.LENGTH_LONG).show(); 
     return; 
    } 

似乎像我的基本代碼。然而,這段代碼總是顯示最底層的語句,所以它讓前兩個爲false。

出於調試的目的,我也將resultString返回到我的控制檯。 (刪除樣本中的那一行)。在那裏,我可以很明顯地看到回報的結果實際上是20

這樣簡單的代碼不能做我想做的事情嗎?

謝謝。

+1

檢查是否沒有空間 – Chol

+1

檢查resultString的長度。 –

+0

由於響應不是你正在比較的(「0」和「20」)而不是「equals」,你應該使用'contains' – SilentKiller

回答

1

響應不完全是您比較的字符串,即「0」和「20」。但響應

0: Wrong Password 
20: Wrong username 
otherwise: a UUID 

如果要比較的字符串,那麼它應該是

選項:1

String resultString = result.toString(); 
if (resultString.equals("20: Wrong username")) { 
    // code 
} else if (resultString.equals("0: Wrong Password")) { 
    // code 
} else { 
    // code 
} 

選項:2

而不是eqauls你應該使用contains

String resultString = result.toString(); 
if (resultString.contains("20")) { 
    // code 
} else if (resultString.contains("0")) { 
    // code 
} else { 
    // code 
} 
3

Teh的代碼似乎是好的...也許在結果中的空白? 嘗試修剪resultString。 其中es 20,result或resultString?

作爲一個建議,它通常做的更好"".equals(object),否則,如果對象爲null,將拋出NullpointerExceptcion

問候

0

我與上述所有的同意 - 代碼看起來不錯。

嘗試使用String.compareTo並查看int返回的值以檢查隱藏的差異。

此外,請嘗試打印String.toCharArray + String.length以標識多餘的字符。

0

如果您從Web服務返回的完整字符串未提取代碼(0或20),則需要將'equals'替換爲'contains'。