【问题标题】:Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Select Month"线程“AWT-EventQueue-0”java.lang.NumberFormatException 中的异常:对于输入字符串:“选择月份”
【发布时间】:2020-11-26 14:37:37
【问题描述】:

我试图在 java swing 中开发一个日历应用程序。我有 3 个 JComboBox,您可以在其中选择年、月和日,但每次尝试选择年时都会出现此错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Select Month"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
    at java.base/java.lang.Integer.parseInt(Integer.java:652)
    at java.base/java.lang.Integer.parseInt(Integer.java:770)
    at calendar.Show$1.itemStateChanged(Show.java:315)
    at java.desktop/javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1227)
    at java.desktop/javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1279)
    at java.desktop/javax.swing.JComboBox.contentsChanged(JComboBox.java:1335)
    at java.desktop/javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:123)
    //......//

我认为问题出在我的这部分代码中:

jcbyear3.addItemListener (new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent arg0) {
                int y = Integer.parseInt(String.valueOf(arg0.getItem())); 
                //String mont= String.valueOf(monthjcb.getSelectedItem());
               
                String monthin = String.valueOf(monthjcb.getSelectedItem());
                String mont = monthin == null || monthin.isEmpty() || monthin.equals("Select Month") ? "January" : monthin;
                    
                    
                //int d=Integer.parseInt(String.valueOf(dayjcb.getSelectedItem()));
                    
                String dayin = String.valueOf(monthjcb.getSelectedItem());
                int d = dayin == null || dayin.isEmpty() || dayin.equals("Select Day") ? 1 :Integer.parseInt(dayin) ;
             
                    
                
                int m=0;
                if(mont.equals("January")) {
                    m=1;
                }
                else if(mont.equals("February")) {
                    m=2;
                }
                //.....//

                String[] h=store.search(y, m, d);
                if(h[0].equals("0"))
                    dayarea.setText("No events found");
                else if(h[0].equals("1")){
                    dayarea.setText(h[1]);
                }
                else if(h[0].equals("2")){
                    dayarea.setText(h[1]+"\n"+h[2]);
                }
                else if(h[0].equals("3")){
                    dayarea.setText(h[1]+"\n"+h[2]+"\n"+h[3]);
                }
                else {
                    dayarea.setText(h[1]+"\n"+h[2]+"\n"+h[3]+"\n"+h[4]+"\n"+h[5]);
                }
                
            }
        });

有人可以帮我解决我的问题吗?

【问题讨论】:

    标签: java swing jcombobox


    【解决方案1】:

    这一行

     String monthin = String.valueOf(monthjcb.getSelectedItem());
    

    正在回你"Select Month"

    那么当天你再次要求相同的东西monthjcb.getSelectedItem()):

    String dayin = String.valueOf(monthjcb.getSelectedItem());
    

    所以 dayin = "Select Month" 并且因此您将达到条件:

    int d = dayin == null || dayin.isEmpty() || dayin.equals("Select Day") ? 1 :Integer.parseInt(dayin) ;
    

    这部分Integer.parseInt(dayin)

    导致java.lang.NumberFormatException: For input string: “Select Month”,因为您试图从不包含编码的数字值的字符串中提取整数。

    根据您的注释行,我会说,而不是:

    String dayin = String.valueOf(monthjcb.getSelectedItem());
    

    你可能想要:

    String dayin = String.valueOf(dayjcb.getSelectedItem();
    

    【讨论】:

    • 非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多