【发布时间】:2014-09-07 17:24:52
【问题描述】:
我通过输入 Scanner class 要求提供电话号码,并且我只强制执行数字,但我可能会处理这个错误。我需要有一串整数,而不是一个整数并且大于整数的大小容量。最终,长度必须为 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();
清除整数字符串 - 不是整数数组,而是一系列独立整数,但当然如果你指定为一个整数,它无法区分,所以你必须使用长整数。这就是我要引用的内容,事实上我的电话号码是一系列整数而不是一个整数,所以原始类型对我来说一半对一半错。
解决方案:感谢 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);
【问题讨论】:
-
如果输入的数字是-9876543怎么办?
-是一个有效的电话“号码” -
无效。使其成为简单的美国格式。区号和 7 位数字或仅 7 位数字。
-
这是一个 digits 的字符串,但是将每个数字存储为单独的
int(使用 4 个字节来保存一个永远不会大于 9 的值)是愚蠢的。 -
“不是指整数数组,而是一系列独立整数” - 您所描述的 是 定义的数组/聚合数据。对矢量数据使用单独的变量是疯狂的 IMO。
-
也许这个号码只是一个公司目录运营商,你需要更多的分机号码才能联系到真正的人
标签: java int java.util.scanner