Java如何在两个不同的数组中找到元素总和的总和?

时间:2013-10-02 14:12:29

标签: java arrays indexoutofboundsexception addition

我需要用array1和array2中相应元素的总和填充一个新数组array3。阵列指定为a1,a2和a3。

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]);

6 个答案:

答案 0 :(得分: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做的事情。当您尝试使用arrays循环遍历for元素时,将i范围限定为for循环有助于避免遇到的一些问题用你原来的问题。

如果将i作用于for循环,那么编译器应该在您尝试编译之前发出警告,因为您的原始输出语句甚至不知道名为{的变量{1}}。

答案 1 :(得分:1)

您只需要打印a3数组的所有元素以查看所需的结果:

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

目前,您正尝试使用以下语句显示结果:

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

将抛出空指针异常,因为在循环结束时i的值将为5。

答案 2 :(得分:1)

你的代码很好。只记得变量i增加所以要打印最后一个值,它必须是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]);
        }
    }
}

答案 3 :(得分: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]);
}

答案 4 :(得分:0)

{1}}是因为print语句中IndexOutOfBoundsException的值等于i。数组的元素从0到a3.length()索引,而不是array.length-1。你的其余代码绝对没问题。所以,试试这个:

array.length

或者

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

在数组中打印值时,可以使用这两种方法中的任何一种,因为for( i : a3){ System.out.println(i); } 不会打印数组的所有元素。

答案 5 :(得分:0)

IndexArrayOutOfBounds引起的System.out.println()人已经帮助过你了。除了这个问题,我建议改变

double [] a3 = new double[5];

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

否则,如果您增加a1的尺寸,则会收到另一个IndexArrayOutOfBounds错误。