2013-10-02 90 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错误。