2013-11-02 142 views
0

據我所知,這個程序是正確完成的。但是,鑑於它似乎沒有例外。我將創建2個長度爲x的數組(用戶輸入),用戶將輸入這些元素。完成。接下來,將每個元素乘以另一個數組中的相應元素並添加總和。越界異常乘數組

例,ARRAY1 [0] *數組2 [0] + ARRAY1 [1] *數組2 [1] ...

精確的錯誤是:異常在線程 「主」 java.lang.ArrayIndexOutOfBoundsException:

我已經做了許多不同的循環,下面的最後一個循環,我有額外的空間來識別是我認爲最接近正確,但不是。我非常感謝一些建議,提前謝謝。

System.out.println("This program will multiply 2 one dimension arrays of any length. \n The length and contents of the array is entered from the keyboard."); 
    System.out.println("Enther the data for the first array. "); 

    System.out.println("Enther the length of the array (remember arrays being counting at 0, not 1:"); 

    int a = 0; 
    Scanner keyboard = new Scanner(System.in); 
    a = keyboard.nextInt(); 
    int[] firstArrayLength = new int[a]; 
    System.out.println("Enter the elements of the first array(remember arrays begin counting at 0, not 1"); 
    double arrayElements = 0; 
    for (int elements = 0; elements <= firstArrayLength.length; elements++) { 

     arrayElements = keyboard.nextInt(); 
    } 

    System.out.println("Enter the data for the second array. "); 
    System.out.println("Enter the elements of the second array(remember arrays begin counting at 0, not 1"); 
    int[] secondArrayLength = new int[a]; 

    double secondArrayElements = 0; 
    for (int elements = 0; elements <= secondArrayLength.length; elements++) { 

     secondArrayElements = keyboard.nextInt(); 
    } 
    double [] thirdArray = new double [a]; 





    for (int i =0; i <=firstArrayLength.length; i++) 
     { 
     thirdArray[a] = firstArrayLength[i]*secondArrayLength[i]; 
     } 
    System.out.println(thirdArray); 
     } 
+0

我知道我的循環不加呢,我沒有補充說因爲我認爲它現在還沒有必要。 – user2946846

回答

1
,當你訪問德陣列

更改<=符號<。例如:

for (int elements = 0; elements < firstArrayLength.length; elements++) 
... 

記住,如果length是4,你可以訪問元素:

array[0], array[1], array[2], array[3] // 4 elements 

array[4]不存在,導致了IndexOutOfBounds例外。

編輯

奇怪輸出[[email protected](例如)是因爲你打印一個數組:

int a[] = new int[4]; 
System.out.println(a); 

相反,你可能要打印該數組的元素:

int a[] = new int[4]; 
for (int i = 0; i < 4; i++) { 
    System.out.println(a[i]); 
} 

編輯2

public static void main(String[] args) { 
    System.out 
      .println("This program will multiply 2 one dimension arrays of any length. \n The length and contents of the array is entered from the keyboard."); 
    System.out.println("Enther the data for the first array. "); 

    System.out 
      .println("Enther the length of the array (remember arrays being counting at 0, not 1:"); 

    int a = 0; 
    Scanner keyboard = new Scanner(System.in); 
    a = keyboard.nextInt(); 
    int[] firstArray = new int[a]; 
    System.out 
      .println("Enter the elements of the first array(remember arrays begin counting at 0, not 1"); 
    for (int elements = 0; elements < firstArray.length; elements++) { 

     firstArray[elements] = keyboard.nextInt(); 
    } 

    System.out.println("Enter the data for the second array. "); 
    System.out 
      .println("Enter the elements of the second array(remember arrays begin counting at 0, not 1"); 
    int[] secondArray = new int[a]; 

    for (int elements = 0; elements < secondArray.length; elements++) { 

     secondArray[elements] = keyboard.nextInt(); 
    } 
    double[] thirdArray = new double[a]; 

    for (int i = 0; i < firstArray.length; i++) { 
     thirdArray[i] = firstArray[i]*secondArray[i]; 
    } 

    for (int i = 0; i < thirdArray.length; i++) 
     System.out.println(thirdArray[i]); 
} 
+0

好的,幫助,但現在程序打印「[D @ 17b0b765」,而不是有效的答案。那是什麼? – user2946846

+0

這是因爲你正在打印一個數組對象。請參閱編輯。 – Christian

+0

好吧,我修復了這個問題,現在我的答案爲0.0。小數點是因爲如果我是正確的,那麼這個數字是零,但是這個數字是把我扔掉的。 – user2946846

0

elements <= firstArrayLength.length ==>elements < firstArrayLength.length

arrayElements = keyboard.nextInt(); == >>firstArrayLength[elements] = keyboard.nextInt();

secondArrayElements = keyboard.nextInt(); == >>secondArrayLength[elements] = keyboard.nextInt();

+0

無論元素值如何,當前都打印0.0作爲解決方案。建議呢? – user2946846

+0

是因爲你在循環中鍵入第三陣列而產生的大廳代碼。你應該這樣做! – hasan83

+0

外面對不起。代碼對齊! – hasan83