我有一小段代码始终给我一个错误:
do {
System.out.println("Choose Role: (Manager, Developer, QA) ");
role = scan.nextLine();
// For testing: ///////////////////////
System.out.println("role is: " + role);
////////////////////////////////////////////////
if (is_numeric(role)) {
System.out.println("Invalid Input.");
continue;
} else if (!role.equalsIgnoreCase("MANAGER") || !role.equalsIgnoreCase("DEVELOPER") || !role.equalsIgnoreCase("QA")) {
System.out.println("Invalid Role");
continue;
} else {
break;
}
} while (true);
我添加了“用于测试”块,只是为了查看变量角色是否由于某些原因而发生了变化,但事实并非如此。无论我如何编写经理/开发人员/质量保证书(无论是大写字母,小写字母等),都将触发“无效角色”,并且循环再次发生。
有什么建议么?
最佳答案
从逻辑上讲,此测试是错误的
(!role.equalsIgnoreCase("MANAGER") ||
!role.equalsIgnoreCase("DEVELOPER") ||
!role.equalsIgnoreCase("QA"))
为什么?因为如果角色=“ MANAGER”,则它不等于“ DEVELOPER”(或“ QA”),反之亦然。我想你想要
(!role.equalsIgnoreCase("MANAGER") &&
!role.equalsIgnoreCase("DEVELOPER") &&
!role.equalsIgnoreCase("QA"))
关于java - 文本验证失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21606532/