0

我的代码:

name = jTextFieldName.getText();
admin = Integer.parseInt(jTextFieldAdmin.getText());
anal = Integer.parseInt(jTextFieldAnalytical.getText());
creat = Integer.parseInt(jTextFieldCreative.getText());
finish = Integer.parseInt(jTextFieldFinisher.getText());

persons.addPerson(name, admin, anal, creat, finish);

persons.savePersons();

我想确保 name 是一个字符串,并且 admin、anal、creat 和 finish 是 0 到 30 之间的整数。我想我应该使用 try-catch,但我不知道如何使用它这个上下文。任何帮助表示赞赏!

4

4 回答 4

2

你为什么不使用 aJSpinner代替。

于 2013-03-15T09:16:44.553 回答
2

try catch 不是处理这个问题的好方法:

try {
    name = jTextFieldName.getText();
    admin = Integer.parseInt(jTextFieldAdmin.getText());
    anal = Integer.parseInt(jTextFieldAnalytical.getText());
    creat = Integer.parseInt(jTextFieldCreative.getText());
    finish = Integer.parseInt(jTextFieldFinisher.getText());

    persons.addPerson(name, admin, anal, creat, finish);

    persons.savePersons();
} catch (NumberFormatException e) {
    // One of the integer fields failed to parse. Do something to alert the user.
}

然后,您还可以在 try 部分中进行一些边界检查。例如

if (admin < 0 || admin > 30) {
    // Problem. Alert the user.
}
于 2013-03-15T09:16:22.627 回答
1

用于InputVerifierJTextField如下所示

public class MyInputVerifier extends InputVerifier {
    @Override
    public boolean verify(JComponent input) {
        String text = ((JTextField) input).getText();
        // Validate input here, like check int by try to parse it using Integer.parseInt(text), and return true or false
    }
}

// Set input verifier to the text field
jTextField.setInputVerifier(new MyInputVerifier());
于 2014-04-22T08:18:11.760 回答
1

您需要的是if-else满足条件或要求用户在需要时再次输入。

前任 -

if(admin<0 || admin>30){
  // ask user to input again.
}
于 2013-03-15T09:15:17.030 回答