且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

计算值的总和数组

更新时间:2023-02-10 15:51:47

您也越来越为相同的值甚至因为要打印相同的值: -

  System.out.print(奇元素的总和:+ evenSum);

另外,你的最后一笔是,因为你在做你原有的阵列中的所有元素为 ,因为你是在要素交换的元素 evenData ​​ code>和 oddData ​​ code>,这是零开始。

  INT TEMP =数据[指数]
数据[指数] = evenData [指数] //这个code分配一个值0至当前索引。
evenData [指数] =温度;

所以,你迭代阵列,并指派 0 您的每一个指标,同时加入到新的previous元阵列


我会说,你是不必要使用2个额外阵列和3个额外的循环。为什么不直接在你迭代的原始数组的地方产生了一加?

在事实上,所有的款项可以在一个循环中计算的: -

 为(INT指数= 0;指数 -  LT; data.length;指数++)
{
    总和+ =数据[指数]    如果(数据[指数]%2 == 0)
    {
        // INT TEMP =数据[指数]
        //数据[指数] = evenData [指数]
        // evenData [指数] =温度;        evenSum + =数据[指数]
    }
    其他
    {
        // INT TEMP =数据[指数]
        //数据[指数] = oddData [指数]
        // oddData [指数] =温度;        oddSum + =数据[指数]
    }
}的System.out.println(连心:+ evenSum);
的System.out.println(奇总:+ oddSum);
的System.out.println(合计金额+总和);

所以,你不需要为甚至数字创造额外的数组。

和,也是你的 4回路现在已经凝结成只是一个单一的循环。

The problem im getting is that with oddSum the value outputted is the same as evenSum, and the value for sum of all elements is 0.

I cant quite see where im going wrong as the loops are pretty similar and if the even one works the others should too?

Here is my code anyway:

int evenData[] = new int [10];
int oddData[] = new int [10];
int sum = 0;
int evenSum = 0;
int oddSum = 0;

int[] data = {3, 2, 5, 7, 9, 12, 97, 24, 54};
for(int index = 0; index < data.length; index++)
{
    if (data[index] % 2 == 0)
    {

        int temp = data[index];
        data[index] = evenData[index];
        evenData[index] = temp;

    }

    else
    {
        int temp = data[index];
        data[index] = oddData[index];
        oddData[index] = temp;
    }

}
for(int evenIndex = 0; evenIndex < evenData.length; evenIndex++)
{

    evenSum =evenData[evenIndex] + evenSum;

}
System.out.print("Sum of even elements: " + evenSum);

for(int oddIndex = 0; oddIndex < oddData.length; oddIndex++)
{

    oddSum = oddData[oddIndex] + oddSum;

}
System.out.print("Sum of odd elements: " + oddSum);

for(int index = 0; index < data.length; index++)
{
    sum = data[index] + sum;
}
System.out.print("Sum of all elements: " + sum);

You are getting same value for even and odd because you are printing the same value: -

System.out.print("Sum of odd elements: " + evenSum);

Also, your final sum is zero because you are making out all the elements of your original array as zero, as you are swapping your elements with the elements in evenData and oddData, which are zero initially.

int temp = data[index];
data[index] = evenData[index]; // This code assigns a value 0 to current index.
evenData[index] = temp;

So, you are iterating your array, and assigning 0 to each of your index, while adding the previous element to the new array.


I would say that you are needlessly using 2 extra array and 3 extra loops. Why not just create a sum in the place where you are iterating your original array?

In fact, all your sums can be computed in a single loop: -

for(int index = 0; index < data.length; index++)
{
    sum += data[index];

    if (data[index] % 2 == 0)
    {
        // int temp = data[index];
        // data[index] = evenData[index];
        // evenData[index] = temp;

        evenSum += data[index];
    }
    else
    {
        // int temp = data[index];
        // data[index] = oddData[index];
        // oddData[index] = temp;

        oddSum += data[index];  
    } 
}

System.out.println("Even Sum: "  + evenSum);
System.out.println("Odd Sum: "  + oddSum);
System.out.println("Total Sum: "  + sum);

So, you don't need to create extra arrays for even and odd numbers.

And, also your 4 loops have now been condensed to just a single loop.