Java - nextInt()大小限制

use*_*149 1 java int java.util.scanner

我正在通过输入询问电话号码Scanner class而我只是强制执行号码,但我可能会犯这个错误.我需要有一串int,而不是一个int的东西,并且比int的大小容量大.最终,它需要7个整数或10个整数,而不是介于两者之间或更多或更少,但当然所有数字而不是字母.

System.out.println("What is the  phone number (digits only)?: ");
 while (!Main.scan.hasNextInt()) 
            {
                Main.scan.next();
                System.out.println("What is the  phone number (digits only)?: ");
            }

            int phone_number = Main.scan.nextInt();
Run Code Online (Sandbox Code Playgroud)

清除整数字符串 - 不是意味着整数数组而是一系列独立的整数但当然如果你指定为一个整数,它就无法区分,所以你必须使用长整数.这就是我所引用的,事实上我的电话号码是一系列的int而不是一个int这么原始的类​​型对我来说是正确的,一半是错的.

解决方案:感谢Braj !!

    String numbers = Main.scan.next();
        long phone_number = 0 ;

         while (!numbers.matches("(\\d{7}|\\d{10})$"))
         {


             System.out.println("What is the patient's phone number (digits only)?: ");
             numbers = Main.scan.next();
         } 

         phone_number = Long.valueOf(numbers);
Run Code Online (Sandbox Code Playgroud)

Wyz*_*a-- 5

一个电话号码不是一个整数:987-555-1212不代表数字90亿,八亿七千五百万,五十五万一千二百十二.它只是一串数字.

当您进入分机号码和特殊拨号代码等电话号码时,电话号码也可能很长(很多位数),甚至可以包含"#"和"*"等符号.

我将电话号码存储为字符串,并使用代码检查用户的输入是否包含无效字符.