我正在尝试将所有奇数加到数组中并返回它。对我在做什么错有任何想法吗?
示例:
输入:
Array- [12,6,7,15,1]
它将返回23
public static int sumOdds(int[] numbers) {
sum = 0;
for(int i = 0; i < numbers.length; i++) {
if (numbers%2==0)
return 0;
else (numbers[i] % 2 != 0) {
sum += numbers;
return sumOdds;
}
}
答案 0 :(得分:3)
public static int sumOdds(int[] numbers) {
int sum = 0;
for(int i = 0; i < numbers.length; i++) {
if(numbers[i] % 2 != 0) {
sum += numbers[i];
}
}
return sum;
}
这应该有效。 return
语句不应位于您的if
和else
语句之内,因为它们将立即终止程序的执行。
答案 1 :(得分:1)
Java 8+解决方案就是
public static int sumOdds(int[] numbers) {
return Arrays.stream(numbers).filter(n -> n % 2 == 1).sum();
}
答案 2 :(得分:-1)
这里有一些问题。首先,mod操作不适用于数组。它需要在一个数字上执行。此外,您将立即返回sumOdds而不允许整个循环完成。
这可以。
public static int sumOdds(final int[] numbers) {
int sumOdds = 0;
for (int number : numbers) {
if (number % 2 != 0) {
sumOdds += number;
}
}
return sumOdds;
}
或者更好,使用流。
int sumOdds = IntStream.of(12, 6, 7, 15, 1).filter(number -> number % 2 != 0).sum()