Java 开关盒被视为具有JOptionPane.CANCEL\u选项的重复标签

Java 开关盒被视为具有JOptionPane.CANCEL\u选项的重复标签,java,switch-statement,joptionpane,Java,Switch Statement,Joptionpane,我目前正在使用IntelliJ,当我在菜单中放置按下取消选项的案例时,出现一个错误,显示“重复标签'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 tex

我目前正在使用IntelliJ,当我在菜单中放置按下取消选项的案例时,出现一个错误,显示“重复标签'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语句中定义具有相同值的两种情况

如果查看JOptionPane内部,您将看到
CANCEL\u选项的值为2

以下是JOptionPane类中显示值的部分:

/**如果选择了取消,则从类方法返回值*/
公共静态最终整数取消选项=2

由于您已经有一个
案例2:
,并且
取消\u选项也返回2,因此您必须更改它。例如,如果您更改为
案例6:
,它将起作用。试试看

您可以看到JOptionPane具有的所有值,因此您可以根据其他值修改案例,这样就不会再出现重复案例错误