Java 返回数组的奇数并求和

Java 返回数组的奇数并求和,java,arrays,return,Java,Arrays,Return,我尝试将数组中的所有奇数相加并返回它。有没有想过我做错了什么 例如: 输入: 数组-[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;

我尝试将数组中的所有奇数相加并返回它。有没有想过我做错了什么

例如:

输入:

数组-[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; 
                    }
            }
这应该行得通。返回语句不应包含在if和else语句中,因为它们将立即结束程序的执行


这应该行得通。返回语句不应包含在if和else语句中,因为它们将立即结束程序的执行。

这里有一些问题。首先,mod操作在数组上不起作用。它需要在单个数字上执行。此外,在不允许整个循环完成的情况下,您将立即返回sumforbits

这会奏效的

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()

这里有几个问题。首先,mod操作在数组上不起作用。它需要在单个数字上执行。此外,在不允许整个循环完成的情况下,您将立即返回sumforbits

这会奏效的

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()

Java8+解决方案是

公共静态int sumOddsint[]数字{ 返回Arrays.streamnumbers.filtern->n%2==1.sum; }
Java8+解决方案是

公共静态int sumOddsint[]数字{ 返回Arrays.streamnumbers.filtern->n%2==1.sum; }
数字%2==0应该做什么?数字是数组,不是数字。即使要检查数组中的某个值,如果数组中有偶数,是否真的要返回0?此外,还应该将所有数字相加。但当你找到一个偶数或奇数时,你就会回来number@azurefrog如果数组中没有奇数,我想返回0。您的代码无法编译。返回sumforks wich是一个方法,但未找到参数。返回0将结束for循环,并在数组中的值第一次为偶数时退出该方法。数字%2==0应该做什么?数字是数组,不是数字。即使要检查数组中的某个值,如果数组中有偶数,是否真的要返回0?此外,还应该将所有数字相加。但当你找到一个偶数或奇数时,你就会回来number@azurefrog如果数组中没有奇数,我想返回0。您的代码无法编译。返回sumforks wich是一个方法,但未找到参数。返回0将结束for循环,并在数组中的值第一次为偶数时退出该方法。然后将名称sum更改为sumforks?sum在这里返回23,这不是你想要的吗?这几乎是正确的解决方案。只需使用int sum=0;类型初始化sum;。我需要将其返回给SumLobbs意味着什么?对不起,我的错误。然后将名称sum更改为SumLobbs?sum在这里返回23,这不是你想要的吗?这几乎是正确的解决方案。只需使用int sum=0;类型初始化sum;。我需要把它还给萨姆洛比是什么意思?对不起,我错了。