Java开关-返回到用户输入

Java开关-返回到用户输入,java,input,switch-statement,joptionpane,Java,Input,Switch Statement,Joptionpane,我用Java编写了一个小程序: String grade = JOptionPane.showInputDialog("What is your grade?"); switch (grade) { case "A": JOptionPane.showMessageDialog(null, "You got an A - Well done!"); break;

我用Java编写了一个小程序:

        String grade = JOptionPane.showInputDialog("What is your grade?");
        switch (grade)
        {
            case "A":
                JOptionPane.showMessageDialog(null, "You got an A - Well done!");
                break;

            case "B":
                JOptionPane.showMessageDialog(null, "You got a B - Very good!");
                break;

            case "C":
                JOptionPane.showMessageDialog(null, "You got a C - Good!");
                break;

            case "D":
                JOptionPane.showMessageDialog(null, "You got a D - Study better next time!");
                break;

            default:
                JOptionPane.showMessageDialog(null, "Invalid grade!");
        }
    }
}
现在,问题是-如果用户输入了无效的等级,则会出现“无效等级!”消息,按“确定”后,它将关闭

如何使程序在收到无效等级的消息后返回到输入阶段?

使用带标志的循环:

boolean wrongInput = false;

do {
    wrongInput = false; 
    String grade = JOptionPane.showInputDialog("What is your grade?");
    switch (grade)
    {
        case "A":
            JOptionPane.showMessageDialog(null, "You got an A - Well done!");
            break;

        case "B":
            JOptionPane.showMessageDialog(null, "You got a B - Very good!");
            break;

        case "C":
            JOptionPane.showMessageDialog(null, "You got a C - Good!");
            break;

        case "D":
            JOptionPane.showMessageDialog(null, "You got a D - Study better next time!");
            break;

        default:
            JOptionPane.showMessageDialog(null, "Invalid grade!");
            wrongInput = true;
    }

} while(wrongInput);

您可以使用
while
循环和标签:

loop: while (true) {

    String grade = JOptionPane.showInputDialog("What is your grade?");
    switch (grade)
    {
    case "A":
        JOptionPane.showMessageDialog(null, "You got an A - Well done!");
        break loop;

    case "B":
        JOptionPane.showMessageDialog(null, "You got a B - Very good!");
        break loop;

    case "C":
        JOptionPane.showMessageDialog(null, "You got a C - Good!");
        break loop;

    case "D":
        JOptionPane.showMessageDialog(null, "You got a D - Study better next time!");
        break loop;

    default:
        JOptionPane.showMessageDialog(null, "Invalid grade!");
    }
}

使用flagOK,非常感谢,但我使用的是label方法,这对我来说似乎有点简单。再次感谢!