异常处理解析 int 和空字符串

Exception Handling parse int and empty string

   name = full_name_input.getText(); 
   Fname = father_name_input.getText();
   cnic = father_cnic_input.getText();
   DOB = Integer.parseInt(DOB_input.getText());
   Class_V = Integer.parseInt(class_input.getText());
   prsnt_add = present_add_input.getText();
   city = city_input.getText();
   province = radio_text;

   if(name.equals("") || Fname.equals("") || cnic.equals("") || DOB==0 || Class_V==0 || prsnt_add.equals("") || city.equals("") ||  province.equals(""))
   {
       Toolkit.getDefaultToolkit().beep(); 
       JOptionPane.showMessageDialog(null, "Please fill all fields ! \n");
   }

radio_text这里实际上是单选按钮输入,报错

线程中出现异常 "AWT-EventQueue-0" java.lang.NumberFormatException:对于输入字符串:“”

实际上我想确保 none 的 jfields 由用户保持为空 如果任何字段仍未定义,它会显示一个弹出窗口,请填写所有字段 但是当出生日期或 class 字段或两者都未被用户填写时,它会给出前面段落中提到的错误

我打赌你在这里有问题:

DOB = Integer.parseInt(DOB_input.getText());
Class_V = Integer.parseInt(class_input.getText());

DOB_inputclass_input(甚至两者)getText() returns 空字符串。您应该捕获该异常并像这样正确处理它:

try {
  value = Integer.parseInt(input.getText());
} catch (NumberFormatException e) {
  JOptionPane.showMessageDialog(null, "Illegal nuber format for field <field>");
  return;
} 

发生的事情是您在尝试设置字段后检查字段,但错误发生在这之前。例如,如果 DOB_input 的文本是“”,DOB 将在您看到它为空之前尝试解析它(Integer.parseInt() 无法处理这样的字符串)并抛出错误.如果你想保留你的 if 语句,你必须将它移到你设置值的行上方。但是,要做到这一点,您需要稍微调整一下,以便检查 jfields 的值。喜欢:

if(full_name_input.getText().equals("") || father_name_input.getText().equals("") ..... )
{
   Toolkit.getDefaultToolkit().beep(); 
   JOptionPane.showMessageDialog(null, "Please fill all fields ! \n");
}

从字符串解析数字时出现问题。 您检查过发生在哪条线上吗? 我想这里:

DOB = Integer.parseInt(DOB_input.getText()); Class_V = Integer.parseInt(class_input.getText());