带有JOptionPane.CANCEL_OPTION的开关案例被视为重复标签

时间:2018-10-30 03:43:13

标签: java switch-statement joptionpane

我当前正在使用IntelliJ,当我在菜单中放置一个按CANCEL选项的情况时,出现错误消息“重复标签'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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

如果在JOptionPane中查看,您会发现CANCEL_OPTION的值为2。

这是显示值的JOptionPane类的一部分:

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

由于您已经拥有case 2:,并且CANCEL_OPTION也返回2,因此您必须对其进行更改。例如,如果更改为case 6:,它将起作用。试试看。

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