验证字符串Java

时间:2014-11-29 13:07:28

标签: java string

do {
            grade[y] = JOptionPane.showInputDialog(null, "For student #" + inputGrades.students + " enter grade for course #" + classes);
            if (!grade[y].equals("A") || !grade[y].equals("B") || !grade[y].equals("C") || !grade[y].equals("D") || !grade[y].equals("F")) {
                grade[y] = JOptionPane.showInputDialog(null, "For student #" + inputGrades.students + " enter grade for course #" + classes);
            } else {
                validgrade = true;
            }
        } while (!validgrade);

我正在努力确保一个字符串等于A,B,C,D或F.我陷入无限循环。为什么呢?

1 个答案:

答案 0 :(得分:5)

这种情况总是如此:

if (!grade[y].equals("A") || !grade[y].equals("B") || !grade[y].equals("C") || !grade[y].equals("D") || !grade[y].equals("F"))

grade[y]不能同时等同ABCDF。最多一个!equals(...)将为false。剩下的四个将是true,同时将OR的结果转换为true

您需要&&而不是||

if (!grade[y].equals("A") && !grade[y].equals("B") && !grade[y].equals("C") && !grade[y].equals("D") && !grade[y].equals("F"))

此外,没有必要在JOptionPane.showInputDialog条件内调用if。您需要做的就是让循环继续。所以简化的代码可能如下所示:

do {
    grade[y] = JOptionPane.showInputDialog(null, "For student #" + inputGrades.students + " enter grade for course #" + classes);
} while (!grade[y].equals("A") && !grade[y].equals("B") && !grade[y].equals("C") && !grade[y].equals("D") && !grade[y].equals("F"));