2015-04-06 57 views
2
當下面

我的代碼有一個異常錯誤。分配的目的是爲控制檯分配10個數字,當我輸入10個數字時,運行自動完成並給出了第13行的錯誤。第13行有什麼問題或者是其他問題?串出界使用循環

(該數組必須是一個正常的陣列,而不是的ArrayList)

import java.util.*; 
import java.util.Arrays; 

public class CountOccurrences { 
    static Scanner input = new Scanner(System.in); 
    static int[][] temp = new int[10][1]; 

    public static void main(String[] args) { 
     char YN = 'y'; 

     while (YN == 'y') { 
      run(); 
      System.out.print("Continue? (y or n)\t"); 
      YN = input.nextLine().charAt(0); // Line 13 
     } 
    } 

    public static void run() { 
     System.out.print("Enter the integers between 1 and 100: "); 

     int[] numbersArray = new int[10]; 

     for (int i = 0; i < numbersArray.length; i++) { 
      numbersArray[i] = input.nextInt(); 
     } 

     for (int i = 0; i < numbersArray.length; i++) { 
      Arrays.sort(numbersArray); 
      System.out.println(numbersArray[i]); 
     } 
    } 
} 

回答

4

input.nextLine()可能是一個空字符串,在這種情況下input.nextLine().charAt(0)會給你的例外。在致電charAt之前,您應該檢查Stringlength()

現在,我看到你正在使用input.nextInt()閱讀您的run()法輸入,你必須做的結果是什麼run()方法的末尾添加input.nextLine(),消耗包含最終詮釋行結束。

儘管如此,您仍然需要檢查您在input.nextLine()中獲得的字符串的長度,因爲用戶可能按Enter鍵而不是按Y或N,這會導致相同的異常。

+0

@Tom:出於好奇,是什麼讓你確信它是重複的?尤其是[這個問題](http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-next-nextint-or-other-nextfoo-methods)? – Makoto

+0

@Makoto兩件事:問題的根源和解決方案。或者你爲什麼認爲它不是重複的? – Tom