我有两个文本字段,单击“提交”时它们的总和必须达到 100,如果我在文本字段中输入正确的值,则不会出现错误,但如果我将文本字段留空或在其中输入字母,则错误处理不会不对。有什么想法吗?
submit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (validation == true) {
int numA = Integer.parseInt(aTextField.getText());
int numB = Integer.parseInt(aTextField.getText());
int sum = numA + numB;
if (sum == 100) {
validation = true;
System.out.println("success");
} else {
JOptionPane.showMessageDialog(createFrame, "A and B must add up to 100");
validation = false;
}
}
这是错误
int numA = Integer.parseInt(aTextField.getText());
最佳答案
Integer.parseInt(str);
如果解析到方法中的 String
无法解析,则抛出 NumberFormatException
(您看到的错误)转换为数字。
在这种特殊情况下,您可以使用一些异常处理。我建议使用 try
和 catch
block 。例如;
try{
if(validation == true){
int numA = Integer.parseInt(aTextField.getText());
int numB = Integer.parseInt(aTextField.getText());
int sum = numA + numB;
if(sum == 100){
validation = true;
System.out.println("success");
} else{
JOptionPane.showMessageDialog(createFrame, "A and B must add up to 100");
validation = false;
}
}
} catch (NumberFormatException n){
JOptionPane.showMessageDialog(createFrame, "Only numbers should be entered into A and B");
validation = false;
}
如果现在从 try
block 内抛出异常,它将被“捕获”,然后在 catch< 中将验证设置为
block 。您还可以使用 catch block 显示一条消息,指出只能在字段中输入数字。false
/
使用 Swing API 实现此目的的另一种方法是,如果您不希望他们永远将文本放入这些字段中,您可以使用 JFormattedTextField
允许他们只输入数字。
我希望这有帮助。让我知道你的进展如何。
关于java - 验证 GUI 中的文本字段输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23393452/