2013-11-24 46 views
0

問題是標題基本上....爲什麼這個節目不喜歡我,我3保持收到「ArrayIndexOutOfBoundsException異常」我一直走出這個數組的界限...爲什麼?

public static void main(String[] args) { 
    double[] l1 = {1.2, 3.4, 1.2, 3.4, 1.1}; 
    double[] l2 = {1.2, 1.3, 1.4, 1.5, 1.6}; 

    isSorted(l1); 
    isSorted(l2); 

} 
public static void isSorted(double[] l1){ 
    Scanner in = new Scanner(System.in); 

    if (l1[2]>l1[1]) 
     if(l1[3]>l1[2]) 
      if(l1[4]>l1[3]) 
       if(l1[5]>l1[4]) 
       System.out.println("True"); 
    else 
       System.out.println("False"); 
} 

是不是因爲我是預填的陣列?

edit2:忽略掃描儀。

編輯3:哇。好的。索引從0開始,我是一個白癡!

謝謝。 -_-

+2

索引爲0。使用開始for循環來檢查它是否是排序。 –

+1

我如何使用for循環來檢查? –

+1

你總是需要檢查下一個元素(或者按照相反的順序)。使用從0到'length - 1'的循環。 –

回答

1

注this1

if(l1[5]>l1[4]) 

,但你只有5 l1數組值。但你訪問l1[5]

l1[0],l1[1],l1[2],l1[3],l1[4] 

這些都是五個值,但您可以訪問l1[5],所以它拋出異常。

1

java中的數組是0的鹼基。這意味着您無法訪問您的案例中的索引5。 如果你使用java,最好使用List的接口的一些實現。

我只是想知道您花了多少時間來調試代碼。 (在你的情況下,只需打印元素即可實現數組爲零)。

0

java中的數組是使用基於0的計數完成的。這意味着數組中的第一個元素是l1[0]。因此,使用l1[5]的代碼行意味着您訪問超出界限的元素。

0

在Java和大多數語言中數組索引從0開始:

if ((l1[1]>l1[0]) && (l1[2]>l1[1]) && (l1[3]>l1[2]) && (l1[4]>l1[3])) 
    System.out.println("True"); 
else 
    System.out.println("False"); 
相關問題