[英]Returning and Summing the Odd Numbers of an 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;
}
}
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
语句中,因为它们会立即结束程序的执行。
Java 8+ 解决方案将是
public static int sumOdds(int[] numbers) {
return Arrays.stream(numbers).filter(n -> n % 2 == 1).sum();
}
这里有几个问题。 首先,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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.