2017-06-17 90 views
0

我是初學者,第一次使用Java數組。當我輸出我的代碼時,我得到這個錯誤。在我的實際代碼中沒有錯誤,所以我沒有看到問題在我的代碼中。陣列的錯誤消息

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0   
at sumdouble.Sumdouble.main(Sumdouble.java:24) 

這裏是我的代碼

package sumdouble; 


public class Sumdouble { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
double sum = 0; 
int number = 1; 

double array[] = new double [5]; 
for (number = 0; number < 5; number++) 
{ 
    array[number] = Double.parseDouble(args[number]); 
    System.out.println("The" +number+ "argument value is: " +array[number]); 

    for(double numb: array) 
    { 
     sum = sum + numb; 

    } 
}System.out.printf("Sum of all numbers = %2f", sum); 
    // TODO code application logic here 
} 

} 

回答

0

您訪問args[number],但是當你啓動的程序,你沒有通過任何參數。 args數組的長度爲0.因此,訪問args[0]導致ArrayIndexOutOfBoundsException

+0

我將如何確保該數組沒有長度爲0?我知道問題在於命令行,但我對此很新,因此我很難看到如何使其工作 – henna994

+0

這取決於您如何啓動程序。你是從命令行還是從IDE運行?你使用哪個IDE? – Henry

+0

我正在使用NetBeans 8.2 – henna994

0

錯誤發生在循環的第一次迭代中。您訪問args這是一個數組,填入所謂的command-line arguments。如果你沒有傳遞任何數據,那麼這個數組是空的,這就是爲什麼你會得到這個錯誤。

看看官方文檔,學習如何將命令行參數傳遞給你的Java應用程序here。它不能傷害=)

如果你使用eclipse看看here

+0

那麼我怎麼會通過它來確保我的數組不是空的。我需要使用不同的命令行參數嗎? – henna994