2014-02-26 191 views
1

我需要找出究竟是什麼不對這個代碼幫助:多維數組索引越界的Java

public class Fibonacci 
{ 
    public static void main(String args[]) 
    { 
     int[][] numbers; 
     numbers = new int[1][25]; 
     numbers[0][0] = 0; 
     numbers[0][1] = 1; 
     System.out.println("Fibonacci series: \n"); 
     System.out.println(numbers[0][0]); 
     System.out.println(numbers[0][1]); 

     for(int i=2; i < 20; i++) 
     { 
      numbers[1][i] = numbers[0][i-2] + numbers[0][i-1]; 
      System.out.println(numbers[1][i]); 
     } 
    } 
} 

我得到這個錯誤:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
     at Fibonacci.main(Fibonacci.java:15) 

我可以看到我的數組索引超出了第15行的界限,但我不知道如何解決它。 :/ 幫助讚賞。 :) P.S.新增

+10

號碼[1] [I中設置的值]應該是數字[0] [i]?你只有一排,記得嗎? –

+0

您的示例中也不需要有二維數組。只需刪除第一個無用的維度。 – LaurentG

+0

Ahhhh謝謝。 :)我確實需要2個維度,因爲這是我的學校對練習活動的想法。 – user3357525

回答

4

您有numbers[1][i]都在第15行和第16行,但是會引發異常,因爲第一維的大小僅爲1.嘗試將兩者都更改爲numbers[0][i]

或者,從它看起來就像你正在試圖做的,你可以改變你的陣列的初始化

numbers = new int[2][25]; 
+0

請注意,如果您確實需要兩行,則必須對代碼進行其他更改。如果只改變'new int',那麼寫入的代碼將不會正確顯示序列。 – ajb

0

總之,你的陣列是不是足夠大。

你聲明你的數組爲「new int [1] [25]」,這意味着,因爲[1],只有一行。 但是,然後在第15行中引用第二行:「數字[1] [i]」。基於你的斐波那契類名,你的代碼顯然有更多的錯誤,但是你的直接問題的解決方案是讓你的數組變大:「new int [X] [25]」,但是放入更大的X.

0

兩個dimensinal陣列是numbers = new int[1][25];第一尺寸大小爲1,它意味着你可以在元件或使用索引0 .SO從numbers[1][i]更改代碼以numbers[0][i]