Java 计算数组中的值之和
我遇到的问题是,对于oddSum,输出的值与evenSum相同,所有元素的和的值为0 我不太明白我哪里出了问题,因为循环非常相似,如果偶数的一个工作,其他的也应该工作 下面是我的代码:Java 计算数组中的值之和,java,arrays,math,Java,Arrays,Math,我遇到的问题是,对于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 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);
int evenData[]=新的int[10];
int oddData[]=新int[10];
整数和=0;
int evenSum=0;
int oddSum=0;
int[]数据={3,2,5,7,9,12,97,24,54};
for(int index=0;index
对于偶数
和奇数
您将获得相同的值,因为您正在打印相同的值:-
System.out.print("Sum of odd elements: " + evenSum);
另外,您的最终和是zero
,因为您将原始数组中的所有元素计算为zero
,因为您将元素与evenData
和oddData
中的元素交换,它们最初为零
int temp = data[index];
data[index] = evenData[index]; // This code assigns a value 0 to current index.
evenData[index] = temp;
因此,您正在迭代数组,并将0
分配给每个索引,同时将上一个元素添加到新数组中
我想说,您不必要地使用了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);
for(int index=0;index
因此,您不需要为偶数
和奇数
数字创建额外的数组
而且,您的4个循环
现在已压缩为一个循环
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);
for(int index=0;index
Yeh抱歉,我在发布ahah时注意到了这一点。但是对于所有元素的和,你是说数组的交换使原始数组值为0?@user1840051。。是的,因为当你初始化一个数组时,它的所有元素都被初始化为默认值0。因此,当您将当前元素与evenArray
中的元素交换时,当前数组现在将包含0
。是的,我现在意识到我不需要交换它们,只需将偶数值分配给另一个数组即可。谢谢你给我展示了更简洁的方法,非常有用:)@user1840051。。没错。既然你知道了,请用我张贴的方式。它的效率更高,可读性也更好。哦,老兄,手机更新很奇怪。如果没有汗水,你能编辑它吗?非常感谢。:-)很好,现在看起来很正常;-)