我正在尝试编写一个方法,它将接受数组int []数字并返回数组中所有奇数的总和。我不确定为什么它没有返回正确的值。目前它返回" 3"何时它应该返回" 9"。
public static void main(String[] args) {
int[] numbers = { 2, 1, 5, 3, 0 };
System.out.println(oddballsum(numbers));
}
public static int oddballsum(int array[]) {
int sumodds = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 != 0) { sumodds = +(array[i]);}
}
return sumodds;
}
答案 0 :(得分:4)
sumodds =+ (array[i])
表示&#34;将array[i]
的值分配给sumodds
&#34;。 +
和()
没有区别 - 它在语义上与sumodds = array[i]
相同。如果您只想要数组中的最后一个奇数值,请使用此选项。
sumodds += array[i]
表示&#34;将sumodds
的值增加array[i]
。如果您尝试对数组中的奇数值求和,请使用此选项。
答案 1 :(得分:2)
错误的原因在于这段代码......
if (array[i] % 2 != 0) {
sumodds = +(array[i]);
}
你不是总结或累积你只是用正号分配值
最后,您的代码只返回数组中找到的最后一个奇数值...
你必须这样做:
if (array[i] % 2 != 0) {
sumodds += array[i];
}
答案 2 :(得分:0)
如果你写了太多代码,你就有更多机会出错,你应该使用java 8 Streams:
int sumOdd = Arrays.stream(array).filter(t -> t%2==1).sum();
System.out.println(sumOdd);
答案 3 :(得分:0)
问题在于您的添加运算符=+
。如果要添加新值并将其赋值给同一变量,则应为+=
。请参考下面的工作代码。
public static void main(String[] args) {
int[] numbers = {2, 1, 5, 3, 0};
System.out.println(oddballsum(numbers));
}
public static int oddballsum(int array[]) {
int sumodds = 0;
for(int element : array) {
if(element % 2 != 0) {
sumodds += element;
}
}
return sumodds;
}