文本字段的数字格式异常+有条件的文本字段的格式错误

时间:2019-04-06 13:32:33

标签: java mysql

你好,我有一个问题,我希望用户输入一个电话号码(在文本字段中),即数字又名不是字符串,如果它是字符串,它会打印出电话格式错误,如果不是10位数字也不以05还显示一条消息 这是我的代码:

 String phone2=phone.getText().trim();
 if(phone2.isEmpty()){//is text field empty 

           JOptionPane.showMessageDialog(null,"Add Phone number !");
           phone.requestFocus();
           return;
       }

               // starts with 05
        String zereofive = phone2.substring(0, 2);

             for(int i=0;i<phone2.length();i++){
                   if (!Character.isDigit(i)) {
            JOptionPane.showMessageDialog(null, "Wrong format for phone");
            phone.requestFocus();
            return;
        } // check length of phone number 
                   else  if (phone2.length() != 10 && !zereofive.equals("05")) {
            JOptionPane.showMessageDialog(null, "enter 10 digits for the phone number and starts with 05");
            phone.requestFocus();
            return;
        }
             }

但它仅显示“电话格式错误”消息

另一件事是,对于这个年龄段,我想捕捉我这样做的数字格式异常:

    int agee = 0;    // Default if nothing inputed 
               try{
        // AGE
            //is Age text field empty
            String theAge = age.getText().trim();
            if (theAge.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Enter your age !!");
                age.requestFocus();
                return;
            }


            if (theAge.mat

ches("\\d+")) {
            agee = Integer.parseInt(theAge);
        }
        // only 18 + can register
        if (agee < 18) {
            JOptionPane.showMessageDialog(null, "You can't register because you are under 18!");
            age.requestFocus();
            return;
        }}
        catch(NumberFormatException ex)
        {
            JOptionPane.showMessageDialog(null,"Please enter number for age");
        }

仅在我在文本字段中输入字符串“您无法注册,因为您未满18岁!”时在此显示。消息。

1 个答案:

答案 0 :(得分:0)

我认为必须考虑使用的逻辑。 对于第一个问题: 您认为什么不起作用?您当前的逻辑是:

If (input empty) { "Add Phone number !" } if (one input char is not digit) { "Wrong format for phone" } else if (input length != 10 or does not start with "05") { "enter 10 digits for the phone number and starts with 05" }

因此,如果输入的字符不是数字,则会显示“电话格式错误”。

第二个问题: 您在开始时将年龄设置为0。 然后,您使用正则表达式检查输入内容是否仅包含数字。 如果这不是真的,则您永远不会解析输入,因此就永远不会抛出NumberformatException(捕获它也是没有必要的)。您可以使用以下示例

if (theAge.matches("\\d+")) { agee = Integer.parseInt(theAge); if (agee < 18) { JOptionPane.showMessageDialog(null, "You can't register because you are under 18!"); age.requestFocus(); return; } } else { JOptionPane.showMessageDialog(null,"Please enter number for age"); }