Switch Case 被视为具有 JOptionPane.CANCEL_OPTION 的重复标签

Switch Case Considered as a Duplicate Label with JOptionPane.CANCEL_OPTION

我目前正在使用 IntelliJ,当我在我的菜单中放置一个用于按下“取消”选项的案例时,出现 "Duplicate label '2'" 错误。

import javax.swing.*;
public class Main {
   public static void main(String[] args){
      int choice=0;
         Object menu= "1. Name Constructor\n" +
                 "2. Pretty Printing of text\n" +
                 "3. FLAMES\n" +
                 "4. Your Superhero name!\n" +
                 "5. return to the main menu\n";
      do {
        choice = Integer.parseInt(JOptionPane.showInputDialog(null,
                "S T R I N G  M A N I P U L A T I O N  M E N U\n" +
      menu, "Menu", 1));
        switch (choice) {
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
            case 4:
                break;
            case 5:
                break;
            case JOptionPane.CANCEL_OPTION:
                break;
            default:
                JOptionPane.showMessageDialog(null,"Enter a valid  choice.","Error",1);
                break;
          }
       }while(choice!=5);
    }
}

发生这种情况是因为您不能在 switch 语句中定义两个具有相同值的 case。

如果查看 JOptionPane 内部,您会看到 CANCEL_OPTION 值为 2。

这是显示值的 JOptionPane class 部分:

/** Return value from class method if CANCEL is chosen. */ public static final int CANCEL_OPTION = 2;

因为你已经有一个 case 2:CANCEL_OPTION 还有 returns 2,你必须改变它。例如,如果您更改为 case 6:,它将起作用。试一试。

here 你可以看到 JOptionPane 的所有值,所以你可以根据其他值修改你的案例,这样你就不会再得到这个重复的案例错误了。