java.lang.NumberFormatException:对于输入字符串:“”

时间:2019-11-08 09:50:42

标签: java

我当前正在使用考勤管理系统,但是当我单击“保存”按钮时,此问题显示为“ java.lang.NumberFormatException:对于输入字符串:”” 这是我的代码:

 try{    
          Class.forName("com.mysql.cj.jdbc.Driver");
          Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/attendance","root","sydneydel");
     String sql = "insert into attendance.student_info values(?,?,?,?,?)";
          PreparedStatement pst = conn.prepareStatement(sql);
          pst.setInt(1,Integer.parseInt(jTextField2.getText()));
          pst.setString(2, last.getText());
          pst.setString(3,first.getText());
          pst.setString(4,mid.getText());

          String gender;
          if (jRadioButton1.isSelected()){
              gender=jRadioButton1.getText();
          }
          else{
               gender=jRadioButton2.getText();
          }
          pst.setString(5, gender);
          pst.executeUpdate();
          JOptionPane.showMessageDialog(null, "SUCCESSFUL");
          conn.close();
         String data1= last.getText();
        String data2= first.getText();
        String data3= mid.getText();
        String data4= gender;
        Object[] row = {1, data2 + " " + data3 + " " + data1, data4};
        model = (DefaultTableModel) table.getModel();
        model.addRow (row);
        first.setText("");
        jTextField2.setText("");
        last.setText("");
        mid.setText("");
        buttonGroup1.clearSelection();
        if((last == null)&& (first==null)&& (buttonGroup1.equals(null))){
            JOptionPane.showMessageDialog(null, "SAVE ERROR\nFill-up the information needed");
        }
        }
        catch(Exception e)

       {       
        JOptionPane.showMessageDialog(null,e);  
                 }    
    }       

如何解决我的问题,以及如何改进该程序?

2 个答案:

答案 0 :(得分:1)

parseInt在第四行从jTextField2.getText()接收到一个空字符串,当然不能将其解析为整数。

使用调试器找出jTextField2.getText()为空白的原因。实际上在jTextField2中输入了数字吗?

答案 1 :(得分:0)

这是我的第一个答案;)

String value = "10";
Integer convertedForm = Integer.parseInt(value);

这将起作用,并且值将转换为Integer,因为值是数字形式

但是,如果我们这样传递"""abc",则由于我们没有传递数字,因此无法将其从形式转换为Integer。这样它将得到NumberFormatException

请处理NumberFormatException,如果您通过其他然后输入数字