[英]Java - nextInt() size limit
我正在通過輸入Scanner class
要求一個電話號碼,而我僅執行電話號碼,但我可能會遇到這種錯誤。 我需要有一個int字符串,而不是一個int且大於int容量的東西。 最終, 它的長度必須是7 int或10 int,並且不能在或多或少之間,但必須是所有數字而不是letter 。
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();
整數的整數字符串-不是整數的數組,而是一系列獨立的整數,但是如果您將其分配為一個整數,則無法分辨出不同之處,因此必須使用long。 這就是我要引用的事實,我的電話號碼是一系列整數,而不是一個整數,因此原始類型對我來說是正確的一半。
解決方案:感謝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);
電話號碼不是整數:987-555-1212並不代表數字90億,8.75億五千,55.121萬。 這只是一串數字。
當您遇到諸如分機號和特殊撥號代碼之類的電話時,電話號碼也可能會很長(很多數字),甚至包含“#”和“ *”之類的符號。
我將電話號碼存儲為字符串,並帶有代碼來檢查用戶輸入的內容是否包含無效字符。
首先2147483647
是int
的最大值,因此要容納大於10的數字,您需要long
。
您可以接受字符串,也可以使用正則表達式驗證該字符串。
樣例代碼:
String regex = // get the pattern from the above link
String numbers = scanner.next();
if (numbers.matches(regex) {
System.out.println("valid");
} else {
System.out.println("Not valid");
}
根據OP問題
它的長度必須是7 int或10 int,並且不能在或多或少之間,但當然必須是所有數字而不是字母。
根據OP評論
我只想一種方法來驗證長度為10或7位全數字的字符串。
這是演示
樣例代碼:
String numbers = scanner.next();
if (numbers.matches("(\\d{7}|\\d{10})$")) {
int mobile = Integer.valueOf(numbers);
System.out.println("valid");
} else {
System.out.println("Not valid");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.