使用户输入只接受int但存储在String中

时间:2017-10-27 03:59:28

标签: java string int

我的程序已完成,这是我唯一无法弄清楚的部分我必须检查用户输入String userPhone是否为整数

System.out.println("Please enter your phone number (10-dights only)");
        String userNumber=sc.nextLine();

        while(true) {
            if (userNumber.length()==10) {
                order01.cust1.setPhoneNumber(userNumber);
                break;
            }
            else if (userNumber.length()!=10) {
                System.out.println("Invalid phone number, Enter a valid one");
            }
            userNumber=sc.nextLine();
        }   

4 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来验证String是否恰好包含10位数\d{10} - 并且您不需要elsebreak之后。像,

while(true) {
     if (userNumber.matches("\\d{10}")) {
         order01.cust1.setPhoneNumber(userNumber);
         break;
     }
     System.out.println("Invalid phone number, Enter a valid one");
     userNumber=sc.nextLine();
}

答案 1 :(得分:0)

检查数字匹配。 matches()方法的string采用正则表达式。这里\ d *表示所有字符只能是数字。在此之前我们也在检查长度。

 while(true) {
        if (userNumber.length()==10 && userNumber.matches("\\d*")) {
            System.out.println(userNumber);
            break;
        }
        else if (userNumber.length()!=10 || !userNumber.matches("\\d*")) {
            System.out.println("Invalid phone number, Enter a valid one");
        }
        userNumber=sc.nextLine();
    }

答案 2 :(得分:0)

最简单和最原始的是循环输入字符串(因为你的字符串只有10个单位长)并检查每个索引处的字符是否是使用Character.isDigit的数字

答案 3 :(得分:0)

请参阅此链接获取更多信息和原始信用的链接:Original Code

尝试以下方法:

       public static boolean isNumber(String string) {
        try {
            Long.parseLong(string);
        } catch (Exception e) {
            return false;
        }
        return true;
        }
你的代码中的

if (isNumber(userPhone)) {
         order01.cust1.setPhoneNumber(userNumber);
         break;
     }