我希望以下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" );
}
我不明白这个问题是什么
答案 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" );
}