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 楼答案
因为打印的是相同的值,所以
even
和odd
得到的值相同:-另外,您的最终和是
zero
,因为您将原始数组中的所有元素都表示为zero
,因为您将元素与evenData
和oddData
中的元素交换,它们最初为零因此,您正在迭代数组,并将
0
分配给每个索引,同时将前一个元素添加到new array
我想说,你不必要地使用了2个额外的数组和3个额外的循环。为什么不在迭代原始数组的地方创建一个和呢
事实上,你所有的总和都可以在一个循环中计算:
因此,不需要为
even
和odd
数字创建额外的数组而且,你的
4 loops
现在已经压缩为一个循环