Java交换机未按预期工作

Java交换机未按预期工作,java,Java,因此,作为一名初学者,我尝试按如下方式使用开关: switch (c_a.getText()) { case "Customer": { new LoginPage().setVisible(true); } case "Admin": { new LoginPageadmin().setVisible(true); } d

因此,作为一名初学者,我尝试按如下方式使用开关:

switch (c_a.getText())
    {

        case "Customer":
        {
            new LoginPage().setVisible(true);
        }

        case "Admin":
        {
            new LoginPageadmin().setVisible(true);
        }

        default:
        {
            JOptionPane.showMessageDialog(this, "Please try again");
        }
    }
尽管这里的问题是,它在默认情况下也会打开JOptionPane。我做错了什么?

你漏掉了break语句

switch (c_a.getText()) {
    case "Customer": {
        new LoginPage().setVisible(true);
        break;
    }
    case "Admin": {
        new LoginPageadmin().setVisible(true);
        break;
    }
    default: {
        JOptionPane.showMessageDialog(this, "Please try again");
        break;
    }
}
来源:

在switch语句中,需要放置break语句,否则可以执行其他开关块。下面是它在一个关于switch语句中所说的:

每个break语句终止封闭的switch语句。控制流继续执行开关块后面的第一条语句。break语句是必需的,因为如果没有它们,开关块中的语句就会失效。在遇到break语句之前,匹配大小写标签之后的所有语句都将按顺序执行,而不管后续大小写标签的表达式如何


没有休息;,您的代码通常会在切换块中失效,这里就是这种情况。

您需要在切换条件之间添加中断,默认情况下是失效。您需要休息;