我的代码:
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();
我想确保名称是一个字符串,而admin,anal,creat和finish是0到30之间的整数。我在想我应该使用try-catch,但我不确切知道如何在这种情况下使用它。任何帮助赞赏!
答案 0 :(得分:2)
尝试捕获并不是一个糟糕的方法来处理这个问题:
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部分中放置一些边界检查。 e.g。
if (admin < 0 || admin > 30) {
// Problem. Alert the user.
}
答案 1 :(得分:2)
为什么不使用JSpinner
。
答案 2 :(得分:1)
您需要的是if-else
哪些条件符合条件或要求用户在需要时再次输入。
前 -
if(admin<0 || admin>30){
// ask user to input again.
}
答案 3 :(得分:1)
InputVerifier
使用JTextField
,如下所示
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());