有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

共 (1) 个答案

  1. # 1 楼答案

    因为打印的是相同的值,所以evenodd得到的值相同:-

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

    另外,您的最终和是zero,因为您将原始数组中的所有元素都表示为zero,因为您将元素与evenDataoddData中的元素交换,它们最初为零

    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现在已经压缩为一个循环