2013-10-02 129 views
0

我需要使用array1和array2中相應元素的總和來填充新數組array3。數組被指定爲a1,a2和a3。Java如何找到兩個不同數組中元素總和的總和?

double[] a1 = {1.2, 2.3, 3.4, 4.5, 5.6}; 
double[] a2 = {1.0, 2.0, 3.0, 4.0, 5.0}; 

a3也應該是5個雙打的數組。 它應該是{2.2,4.3,6.4,8.5,10.6}。

我試圖找出它,但它不斷搞亂。 謝謝的任何幫助!

這是我到目前爲止有:

double[] a1 = {1.2, 2.3, 3.4, 4.5, 5.6}; 
double[] a2 = {1.0, 2.0, 3.0, 4.0, 5.0}; 
int i = 0; 
double [] a3 = new double[5]; 
for(i =0; i < a1.length; i++) { 
    a3[i] = a1[i] + a2[i]; 
} 
System.out.println(a3[i]); 
+0

你的問題是關於IndexArrayOutOfBounds,對吧? – RamonBoza

+0

@RamonBoza是的! –

+0

使用Juned Ahsan回答:P – RamonBoza

回答

2
double[] a1 = {1.2, 2.3, 3.4, 4.5, 5.6}; 

double[] a2 = {1.0, 2.0, 3.0, 4.0, 5.0}; 

double [] a3 = new double[5]; 


for(int i=0; i < a1.length; i++){ 
    a3[i] = a1[i] + a2[i]; 
} 
for(int i=0; i < a1.length; i++){ 
    System.out.println(a3[i]); 
} 

這是一個更好一點的解決方案。無論如何,你的問題的核心是你在做什麼i。當您嘗試使用for循環遍歷arrays的元素時,請將i的作用域保留爲for循環,這有助於避免您在原始問題中遇到的一些問題。

如果你保持i作用域只是for循環,那麼你的編譯器應該拋出一個警告之前,你甚至嘗試編譯因爲你原來的輸出語句甚至不會知道關於一個叫做i變量。

1

你只需要打印A3陣列中的所有元素看到期望的結果:

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

目前你正試圖顯示導致使用一個語句:

System.out.println(a3[i]); 

將拋出空指針異常,因爲VA在循環結束時,我的5將會是5。

+2

Arrays.toString有什麼問題?它不會拋出一個NPE它會拋出一個'ArrayIndexOutOfBoundsException'。 –

+0

@BoristheSpider absoloutely沒問題。我相信對於提問者來說,值得學習如何在這裏使用循環和數組,而不是使用API​​ :-) –

+0

對我來說,鮑里斯可以,但是OP永遠不會知道他爲什麼失敗。 – RamonBoza

0

for(i =0; i < a1.length; i++){ 
    a3[i] = a1[i] + a2[i]; 
} 

System.out.println(a3[i]); 

應該

for(i =0; i < a1.length; i++){ 
    a3[i] = a1[i] + a2[i]; 
    System.out.println(a3[i]); 
} 
+1

Downvoter,請解釋。 –

+0

謝謝,感謝您的幫助! –

0

IndexOutOfBoundsException是由於您的打印語句中的i的值等於a3.length()而引起的。數組的元素索引從0到array.length-1,而不是高達array.length。其餘的代碼是絕對沒問題的。所以,試試這個:

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

或本

for(i : a3){ 
    System.out.println(i); 
} 

當陣列式打印的值,你可以使用這兩種方法,因爲System.out.println()不打印陣列中的所有元素。

+0

謝謝,感謝您的幫助! –

+0

不客氣。 –

1

你的代碼沒問題。只記得變量我增加了,所以要打印最後一個值,它必須是i-1。

public class Test { 
    public static void main(String[] args) { 
     double[] a1 = {1.2, 2.3, 3.4, 4.5, 5.6}; 

     double[] a2 = {1.0, 2.0, 3.0, 4.0, 5.0}; 

     int i = 0; 

     double [] a3 = new double[5]; 


     for(i =0; i < a1.length; i++){ 
      a3[i] = a1[i] + a2[i]; 
     } 

     System.out.println(a3[i-1]); 

     for(i =0; i < a1.length; i++){ 
      System.out.println("a["+i+"] = "+a3[i]); 
     } 
    } 
} 
+0

謝謝,您的代碼使我能夠確切地看到發生了什麼! –

+0

我必須擁有[i-1],因爲就像我以前那樣,它只能打印數組到索引4,對吧?因此,從某種意義上說,outOfBounds異常真的意味着像「下界」? –

+0

'outOfBounds'就是這個意思。 ''數組'索引從'0'開始,並上升到'n-1',其中'n'是陣列中索引的總數。嘗試訪問超出此範圍的數組索引稱爲「outOfBounds」。對於大小爲「n」的數組,「範圍」在「0」和「n-1」之間。 – nhgrif

0

傢伙已經幫你引起的System.out.println()IndexArrayOutOfBounds。除了這個問題,我會建議改變

double [] a3 = new double[5]; 

double [] a3 = new double[a1.length]; 

否則,如果你增加a1大小,你會得到另一個IndexArrayOutOfBounds錯誤。