Do While循环和if语句中的数字验证

时间:2016-11-23 11:04:34

标签: java

package validation;
import java.util.*;
public class Validation {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String regex = "^[a-zA-Z ]+$";
        String regex1 = "\\d[0123456789]";
        String Char;
        String Num;
        do {
            System.out.print("What Is Your Name:");
            Char = input.nextLine();

            if (Char.matches(regex))
                System.out.println("Welcome"+" "+Char);
            else if (Char.isEmpty())
                System.out.println("String field should not be Empty.");
            else if(!Char.matches(regex))
            System.out.println("Please Enter A Valid String!");
        } while(!Char.matches(regex));
        do {
            System.out.println("How Old Are you:");
            Num = input.nextLine();
            if (Num.matches(regex1))
                System.out.println("You Are"+" "+Num);
            else if (Num.isEmpty())
                System.out.println("Number field should not be Empty.");     
            else if(!Num.matches(regex1))
                System.out.println("Please Enter A Valid Number!");
        } while(!Num.matches(regex1));  
    }
}

您现在看到的是一个正常工作的代码,我对它没有任何问题。我想问的是,如果我想在我的代码上添加另一个功能,例如,如果您在数字输入字段中键入下面的数字18,它将为您提供此输出:

"Your are uderage". 

3 个答案:

答案 0 :(得分:1)

如果我找到了你,你只需在你的支票上添加另一个if语句:

...
do {
  System.out.println("How Old Are you:");
  Num = input.nextLine();  
  // input is numeric?
  if (Num.matches(regex1)) {
    if (Integer.valueOf(Num) >= 18) {
      System.out.println("You Are " + Num)
    } else {
      System.out.println("You are uderage")
    }
  } else if (Num.isEmpty()) {
      System.out.println("Number field should not be Empty.");
  } else if(!Num.matches(regex1)) {
    System.out.println("Please Enter A Valid Number!");
  }
} while(!Num.matches(regex1));
...

一般来说,其他答案中关于代码约定的评论当然是正确的。

您还可以查看常用的库,例如Apache Commons Lang (StringUtils)。这些有助于避免常见问题,例如缺少空检查或提供有用的功能,例如isNumeric检查字符串。

答案 1 :(得分:0)

首先,您应该将其存储在String中,而不是在int中存储年龄。 第二个变量名应始终以小写字母开头。它应该是num而不是Num

如果您想要在代码中完成它,那么您可以这样做。

do {
        System.out.println("How Old Are you:");
        Num = input.nextLine();
        if (Num.isEmpty()){
            System.out.println("Number field should not be Empty.");
            break;       
        }
        else if (!Num.matches(regex1)){
            System.out.println("Please Enter A Valid Number!");
            break;
        }
        else{
            if(Integer.parseInt(NUM)<18){
               System.out.println("Underage, exiting");                
               break;
            }
            else
               System.out.println("You Are"+" "+Num);
        }     
    }while(!Num.matches(regex1)); 

代码约定java:Code conventions

答案 2 :(得分:0)

您可以为已有的条件语句添加简单的条件语句。我使用Integer.valueOf(),因为您已将Num定义为String

        if (Num.matches(regex1))
            System.out.println("You Are" + " " + Num);
        else if (Num.isEmpty())
            System.out.println("Number field should not be Empty.");

        else if (!Num.matches(regex1))
            System.out.println("Please Enter A Valid Number!");
        else if (Integer.valueOf(Num) < 18) {
            System.out.println("You Are" + " " + Num + "so you're underaged");
        }

也许您应该将Num的类型设置为int并使用input.nextInt()来读取整数值而不是String。