【发布时间】:2017-07-20 22:12:26
【问题描述】:
Java 新手,非常感谢任何帮助。 JTextField 中的数据验证有一个小问题。 要求用户输入他们的年龄、是否吸烟以及是否超重。 吸烟和体重验证工作正常,我设置的年龄限制也是如此。
但是,如果我在 ageField JTextField 中输入一个字母,它似乎会卡住并且不会打印其他验证错误。 (例如,它会正确打印“Age must be an integer”,但是如果我还在 smokesField 中输入“h”,则不会打印“Smoke input should be Y, y, N or n”。)
对不起,这是一个冗长而臃肿的解释!
无论如何,这是我遇到困难的代码,谢谢:
public void actionPerformed(ActionEvent e)
{
String ageBox = ageField.getText();
int age = 0;
if (e.getSource() == reportButton)
{
if (ageBox.length() != 0)
{
try
{
age = Integer.parseInt(ageBox);
}
catch (NumberFormatException nfe)
{
log.append("\nError reports\n==========\n");
log.append("Age must be an Integer\n");
ageField.requestFocus();
}
}
if (Integer.parseInt(ageBox) < 0 || Integer.parseInt(ageBox) > 116)
{
log.append("\nError reports\n==========\n");
log.append("Age must be in the range of 0-116\n");
ageField.requestFocus();
}
if (!smokesField.getText().equalsIgnoreCase("Y") && !smokesField.getText().equalsIgnoreCase("N"))
{
log.append("\nError reports\n==========\n");
log.append("Smoke input should be Y, y, N or n\n");
smokesField.requestFocus();
}
if (!overweightField.getText().equalsIgnoreCase("Y") && !overweightField.getText().equalsIgnoreCase("N"))
{
log.append("\nError reports\n==========\n");
log.append("Over Weight input should be Y, y, N or n\n");
smokesField.requestFocus();
}
}
【问题讨论】:
-
第二个
Integer.parseInt(ageBox)会抛出异常
标签: java string validation int jtextfield