2016-04-24 107 views
0

我想要下面的if語句來比較多個字符串,但是當我比較多個字符串時,它會給我創建的錯誤消息。下面是不起作用的代碼。如何將文本輸入與多個字符串進行比較?

的變量是測試= 'c3400553' 和TEST2 = 'c3400554'

if (!uname.getText().toString().matches("[cC][0-9]{7}") || 
    !uname.getText().toString().equals(test) || 
    !uname.getText().toString().equals(test2) 
    ) { 
    uname.setError("Incorrect ID Format"); 
} 

下面是一個適用於一個比較的代碼。

String test = "c3400553"; 
... 

if (!uname.getText().toString().matches("[cC][0-9]{7}") || 
     !uname.getText().toString().equals(test) 
     ) { 
      uname.setError("Incorrect ID Format"); 
} 

我不明白的問題是

+1

檢查條件。確保在需要的地方使用'&&'和'||'。還要檢查'!'(不是操作符)的用法。首先,提供一個[mcve] – Idos

+0

uname引用來自用戶輸入的編輯文本字段 –

+0

「多字符串測試」中的條件將始終返回true。這有點像(x!= 1)|| (x!= 2)其中你真正想要的是(x!= 1)&&(x!= 2)。在你的情況下你可能想要的是:(!uname.getText()。toString()。matches(「 ()。)()[] [cC] [0-9] {7}「)&&(!uname.getText()。toString()。equals(test)&& !uname.getText()。toString()。equals(test2))) –

回答

1

那是因爲你需要取出一些!,或者你需要你的||通過&&更換。

這取決於你想達到的目標。如果你想被宣佈爲不正確的ID,如果它不符合格式,如果它不等於test並且也不等於test2,則該解決方案是這樣的:

if (!uname.getText().toString().matches("[cC][0-9]{7}") && 
    !uname.getText().toString().equals(test) && 
    !uname.getText().toString().equals(test2)) { 

     uname.setError("Incorrect ID Format"); 
} 

否則,如果你想要做的是檢查是否UNAME的格式相匹配,並且不等於測試和TEST2,那麼問題是,你需要測試和測試2比較之前刪除!

if (!uname.getText().toString().matches("[cC][0-9]{7}") || 
    uname.getText().toString().equals(test) || 
    uname.getText().toString().equals(test2)) { 

    uname.setError("Incorrect ID Format"); 
} 
相關問題