我得到的问题是,对于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);
答案 0 :(得分:2)
您为even
和odd
获得相同的价值,因为您打印的是相同的值: -
System.out.print("Sum of odd elements: " + evenSum);
此外,您的最终金额为zero
,因为您将原始数组的所有元素都计为zero
,因为您使用evenData
和{中的元素交换元素{1}},最初为零。
oddData
因此,您正在迭代数组,并为每个索引分配int temp = data[index];
data[index] = evenData[index]; // This code assigns a value 0 to current index.
evenData[index] = temp;
,同时将前一个元素添加到0
。
我会说你不必要地使用2个额外的数组和3个额外的循环。为什么不在迭代原始数组的地方创建一个总和呢?
实际上,所有的总和都可以在一个循环中计算: -
new array
因此,您无需为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);
和even
数字创建额外数组。
而且,您的odd
现在也已缩减为一个循环。
答案 1 :(得分:0)
int temp = data[index];
data[index] = evenData[index];
evenData[index] = temp;
查看上面的行,evenDate为空,在第二行,您将数据数组设置为空。你也在oddDate行中重复同样的错误。
为什么不使用只需尝试以下操作?
for(int index = 0; index < data.length; index++)
{
if (data[index] % 2 == 0) {
int temp = data[index];
evenData[index] = temp;
} else {
int temp = data[index];
oddData[index] = temp; }
}
}
for(int evenIndex = 0; evenIndex < evenData.length; evenIndex++)
{
//since length of all 3 data,even, odd arrays are the same
//you can put both sum operation in one for loop
evenSum = evenData[evenIndex] + evenSum;
oddSum = oddData[evenIndex] + oddSum;
sum = data[evenIndex] + sum;
}
System.out.print("Sum of even elements: " + evenSum);
//you have put evenSum for below odeUm printing in ur code
System.out.print("Sum of odd elements: " + oddSum);
System.out.print("Sum of all elements: " + sum);