异常处理解析 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_input
或 class_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());
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_input
或 class_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());