线程“ AWT-EventQueue-0”中具有Exception的if语句java.lang.NumberFormatException:对于输入字符串:“”

时间:2019-12-13 16:19:58

标签: netbeans

我正在尝试制作一个GUI,您必须在其中填写一些信息以添加客户。

在未提供所有信息的情况下,我想弹出一个窗口,提示您必须填写所有信息,但我仍然遇到相同的错误。

如果输入所有信息,该代码将起作用并保存到SQL数据库:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    String firstname = txtfirstname.getText();
    String lastname = txtlastname.getText();
    String country = txtcountry.getText();
    int passport = Integer.parseInt(txtpassport.getText());


    DateFormat da = new SimpleDateFormat("dd/MM/yyyy");
    String date = da.format(txtdate.getDate());

    if(firstname.equals("")||txtlastname.getText().equals("")||txtcountry.getText().equals("")||txtpassport.getText().equals("")||da.format(txtdate.getDate()).equals("")){
     JOptionPane.showMessageDialog(null,"All fields have to be filled in....");

    }else{

    try {
  DBCustomer.save(new Customer(firstname, lastname, passport, date, country));
  JOptionPane.showMessageDialog(null,"Registration created");
  txtfirstname.setText("");
  txtlastname.setText("");
  txtcountry.setText("");
  txtpassport.setText("");
  txtdate.setDate(null);

} catch (DBException ex) {
  Logger.getLogger(DBCustomer.class.getName()).log(Level.SEVERE, null, ex);
}

  }     

}  

这是我不断得到的例外

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at project.gui.addCustomer.jButton1ActionPerformed(addCustomer.java:225)
at project.gui.addCustomer.access$000(addCustomer.java:31)
at project.gui.addCustomer$1.actionPerformed(addCustomer.java:173)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

2 个答案:

答案 0 :(得分:0)

基于Java文档。

public static int parseInt(String s)
                    throws NumberFormatException

Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a positive value. The resulting integer value is returned, exactly as if the argument and the radix 10 were given as arguments to the parseInt(java.lang.String, int) method.
Parameters:
s - a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.

答案 1 :(得分:0)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    String firstname = txtfirstname.getText();
    String lastname = txtlastname.getText();
    String country = txtcountry.getText();
try{
    int passport = Integer.parseInt(txtpassport.getText());
}
catch(NumberFormatException e)
{
   //Here you could put your code to display a popup saying that 
   // Passport number is required
}


    DateFormat da = new SimpleDateFormat("dd/MM/yyyy");
    String date = da.format(txtdate.getDate());

    if(firstname.equals("")||txtlastname.getText().equals("")||txtcountry.getText().equals("")||txtpassport.getText().equals("")||da.format(txtdate.getDate()).equals("")){
     JOptionPane.showMessageDialog(null,"All fields have to be filled in....");

    }else{

    try {
  DBCustomer.save(new Customer(firstname, lastname, passport, date, country));
  JOptionPane.showMessageDialog(null,"Registration created");
  txtfirstname.setText("");
  txtlastname.setText("");
  txtcountry.setText("");
  txtpassport.setText("");
  txtdate.setDate(null);

} catch (DBException ex) {
  Logger.getLogger(DBCustomer.class.getName()).log(Level.SEVERE, null, ex);
}

  }     

}