簡體   English   中英

Java-nextInt()大小限制

[英]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萬。 這只是一串數字。

當您遇到諸如分機號和特殊撥號代碼之類的電話時,電話號碼也可能會很長(很多數字),甚至包含“#”和“ *”之類的符號。

我將電話號碼存儲為字符串,並帶有代碼來檢查用戶輸入的內容是否包含無效字符。

首先2147483647int的最大值,因此要容納大於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");
}

Downvoter先閱讀OP的要求,然后再進行Downvote

根據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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM