0

我需要用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]);
4

6 回答 6

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循环,那么您的编译器应该在您尝试编译之前发出警告,因为您的原始输出语句甚至不知道名为i.

于 2013-10-02T14:16:41.760 回答
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]);
        }
    }
}
于 2013-10-02T14:18:36.240 回答
1

您只需要打印 a3 数组的所有元素即可看到所需的结果:

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

目前,您正在尝试使用一条语句显示结果:

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

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

于 2013-10-02T14:14:17.140 回答
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]);
}
于 2013-10-02T14:16:22.833 回答
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);
}

When printing the values in an array, you can use either of these two approaches, because System.out.println() does NOT print all the elements of the array.

于 2013-10-02T14:17:21.637 回答
0

伙计们已经帮助你解决了IndexArrayOutOfBoundsSystem.out.println(). 除了这个问题,我建议改变

double [] a3 = new double[5];

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

否则,如果你增加 的大小a1,你会得到另一个IndexArrayOutOfBounds错误。

于 2013-10-02T14:38:53.553 回答