小编典典

计算数组中的值之和

java

我得到的问题是,使用oddSum时,输出的值与evenSum相同,并且所有元素之和的值为0。

我无法完全看到即时通讯出了什么问题,因为这些循环非常相似,而且即使一个循环也可以工作,其他循环也应该如此吗?

无论如何这是我的代码:

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

阅读 310

收藏
2020-11-26

共1个答案

小编典典

您将获得相同的价值,even并且odd因为您正在打印相同的价值:-

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

此外,您的最后一笔是zero因为你在做你原有的数组的所有元素zero,因为你是在要素交换的元素evenDataoddData,这是初始值为0。

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

因此,您要迭代数组,并分配0给每个索引,同时将上一个元素添加到中new array


我会说,您不必要地使用了2个额外的数组和3个额外的循环。为什么不只是在迭代原始数组的地方创建一个和?

实际上,所有的总和都可以在一个循环中计算:-

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

因此,您无需为evenodd数字创建额外的数组。

而且,您4 loops现在也已被压缩为一个循环。

2020-11-26