如何将文本输入与多个字符串进行比较?

时间:2016-04-24 12:04:39

标签: java boolean string-comparison boolean-operations

我希望以下if语句与多个字符串进行比较,但是当我与多个字符串进行比较时,它会给出我创建的错误消息。以下是不起作用的代码。

变量是test =' 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 个答案:

答案 0 :(得分:1)

这是因为您需要删除部分!,或者需要将||替换为&&

这取决于你想要达到的目标。如果您希望id声明不正确,如果它不匹配格式AND如果它不等于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是否与格式匹配,并且不等于test和test2,那么问题是您需要在与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" );
}