【问题标题】:Check if jTextField input is an int or a string检查 jTextField 输入是 int 还是 string
【发布时间】:2013-03-15 09:13:01
【问题描述】:

我的代码:

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,但我不知道该怎么做在这种情况下使用它。任何帮助表示赞赏!

【问题讨论】:

标签: java arrays try-catch jtextfield


【解决方案1】:

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.
}

【讨论】:

    【解决方案2】:

    你为什么不改用JSpinner

    【讨论】:

      【解决方案3】:

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

      前-

      if(admin<0 || admin>30){
        // ask user to input again.
      }
      

      【讨论】:

        【解决方案4】:

        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());
        

        【讨论】:

          猜你喜欢
          • 2013-10-11
          • 2013-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-09
          • 2020-09-03
          • 2015-02-02
          • 1970-01-01
          相关资源
          最近更新 更多