作为初学者,我试图按如下方式使用开关:
switch (c_a.getText())
{
case "Customer":
{
new LoginPage().setVisible(true);
}
case "Admin":
{
new LoginPageadmin().setVisible(true);
}
default:
{
JOptionPane.showMessageDialog(this, "Please try again");
}
}
虽然这里的问题是它也默认打开了JOptionPane。我做错了什么?
答案 0 :(得分:1)
在switch
语句中,您需要放置break
语句,否则可以执行其他开关块。以下是Java tutorial关于switch语句的内容:
每个break语句都会终止封闭的switch语句。控制流继续切换块后面的第一个语句。 break语句是必要的,因为没有它们,switch块中的语句就会失败。匹配的case标签之后的所有语句都按顺序执行,而不管后续case标签的表达式如何,直到遇到break语句。
如果没有break;
,您的代码通常会“掉落”交换机块,就像这里的情况一样。
答案 1 :(得分:0)
您错过了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;
}
}
来源:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html