2016-04-24 17 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"); 
} 

である1つの比較のために動作するコードです。

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!= 1)&&(x!= 2)です。あなたの場合、おそらく何が必要ですか:(!uname.getText()。toString()。matches( "!uname.getText()。toString()。equals(test2)))&&(!c)[0-9] {7} ")&&(!uname.getText()。toString()。 –

答えて

1

が何であるかを理解していません。

これは達成しようとしていることによって異なります。あなたはそれがフォーマットと一致しない場合は、idが正しくないと宣言することにしたい場合は、それがtest2に等しくないこともtestに等しく、ない場合には、その解決策はこれです:、

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

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

そうでない場合はどのような場合やりたいことは、una​​meがフォーマットと一致するかどうかをチェックすることで、テストし、テスト2に等しくない場合、問題は、あなたがテストし、テスト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"); 
} 
関連する問題