我有一小段代码始终给我一个错误:

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/

10-10 17:50