簡體   English   中英

Java InputMismatchException錯誤。 我將如何解決這個問題?

[英]Java InputMismatchException error. How would I go about fixing this?

僅當我輸入10個或更多3和7的數字時才會顯示。 它來自下面的此方法,我沒有使用此方法對其進行了測試。 這是代碼

Scanner input = new Scanner(System.in);
    System.out.print("Enter a positive integer...");
    int num = input.nextInt();

    // Outputs
    System.out.println("Number of digits in number is " + numberDigits(num));
    System.out.println("Number begins with " + firstNum(num));
    System.out.println("Number ends with " + lastNum(num));
    System.out.println("Does number begin with 7? " + beginWith(num, 7));
    System.out.println("Does number begin with 3? " + beginWith(num, 3));
    System.out.println("Does number contain a 7? " + contains(num, 7));
    System.out.println("Does number contain a 3? " + contains(num, 3));
    System.out.println("Is the number divisible by 13? " + divTest(num, 13));
    System.out.println("Is the number divisible by 77? " + divTest(num, 77)); 
    System.out.println("How many times does 7 appear in the number? " + digitAppearances(num, 7));
    System.out.println("How many times does 3 appear in the number? " + digitAppearances(num, 3));

public static int digitAppearances(int num, int x) {

    // Check if num is 0
  if (num <= 0 ) {
    return 0;
  }

// Count number of times x appears
else if (num % 10 == x) {
    return 1 + digitAppearances(num / 10, x);
}
else {
    return digitAppearances(num / 10, x);
}
}

Scanner正在嘗試使用nextInt方法讀取一個int

調用nextInt()形式的此方法的行為與調用nextInt(radix)行為完全相同,其中radix是此掃描器的默認基數。

  • nextInt(基數):

拋出:

InputMismatchException如果下一個標記與Integer正則表達式不匹配或超出范圍

如果輸入的值大於Integer.MAX_VALUE (約21億,10位數字),則將收到InputMismatchException

如果要輸入最多19位數字,請使用nextLong

如果要輸入任意位數,只需調用next ,獲取字符串,並驗證它僅包含數字即可。 您需要先將字符數字轉換為數字類型,然后再進行進一步處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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