繁体   English   中英

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

[英]Making a user input only accept int but store in String

完成我的程序,这是我无法弄清楚的唯一部分,我必须检查用户输入的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();
        }   

您可以使用正则表达式来验证String正好包含十个数字,它们将是\\d{10} -并且在break之后不需要else 喜欢,

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

检查数字是否匹配。 字符串的matches()方法采用正则表达式。 \\ 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();
    }

最简单,最原始的方法是遍历输入字符串(因为您的字符串只有10个单位长),然后使用Character.isDigit检查每个索引处的Character.isDigit是否为数字

请参阅该链接以获取更多信息和该链接的原始字幕: 原始代码

请尝试以下方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM