Java 编写一个函数,该函数接受int数组,并将奇偶值之和作为数组返回。(请阅读说明全文)

Java 编写一个函数,该函数接受int数组,并将奇偶值之和作为数组返回。(请阅读说明全文),java,arrays,Java,Arrays,编写一个函数,该函数接受一个数组作为输入,并返回一个由2个数字组成的数组。返回的数组包含来自输入的偶数和奇数之和 如果任何输入为null,则应将其视为空数组 例子: 输入: [30, 18, 2, 83, 20, 71] 输出: [70154] 输入: [14, 11, 10, 67, 41] 输出: [24119] 输入: [36, 24, -82, 29, 44, -3, -100, -5, 49] 输出: [-78,70] 这是我到目前为止的进步,但是一些测试用例失败了,我不能得到满分。任

编写一个函数,该函数接受一个数组作为输入,并返回一个由2个数字组成的数组。返回的数组包含来自输入的偶数和奇数之和

如果任何输入为null,则应将其视为空数组

例子: 输入: [30, 18, 2, 83, 20, 71] 输出: [70154]

输入: [14, 11, 10, 67, 41] 输出: [24119]

输入: [36, 24, -82, 29, 44, -3, -100, -5, 49] 输出: [-78,70]

这是我到目前为止的进步,但是一些测试用例失败了,我不能得到满分。任何帮助都将不胜感激

PS我是初学者

//Function 
public int[] getSumOfEvensAndOdds(int[] array) {
    // Student code begins here
    int[] res = {0,0};
    int len = array.length;

    if(array == null){
        return res;
    }
    
    //logic
    for(int i = 0; i < len; i++){
        if(array[i] % 2 == 0){
            res[0] += array[i];
        } else if(array[i] % 2 != 0){
            res[1] += array[i];
        } else{
            res[0] += 0;
            res[1] += 0;
        }
    }
    
    return res;
    
}
//函数
public int[]GetSumofEvents和赔率(int[]数组){
//学生代码从这里开始
int[]res={0,0};
int len=array.length;
if(数组==null){
返回res;
}
//逻辑
对于(int i=0;i
在尝试获取
数组.length
之前,需要测试
null
。并且,在循环中只需要一个
if-else
(一个数字是偶数或奇数,没有第三状态)。像

试试这个

import java.util.Arrays;

public class SumOfEvenOdd {
    public static void main(String... args) {
    int[] arr1 = { 30, 18, 2, 83, 20, 71 };
    System.out.println(String.format("array1: %s,  output %s",
        Arrays.toString(arr1),
        Arrays.toString(getSumOfEvensAndOdds(arr1))));
    int[] arr2 = { 14, 11, 10, 67, 41 };
    System.out.println(String.format("array2: %s,  output %s",
        Arrays.toString(arr2),
        Arrays.toString(getSumOfEvensAndOdds(arr2))));
    int[] arr3 = { 36, 24, -82, 29, 44, -3, -100, -5, 49 };
    System.out.println(String.format("array3: %s,  output %s",
        Arrays.toString(arr3),
        Arrays.toString(getSumOfEvensAndOdds(arr3))));
    }

    public static int[] getSumOfEvensAndOdds(int[] arr) {
        int[] res = new int[2];
        if (arr == null)
            return res;
        for (int i : arr) {
            if (i % 2 == 0) {
                res[0] += i;
            } else {
                res[1] += i;
           }
        }
        return res;
    }
}
输出


您的代码在哪些测试用例中失败?我们不知道。我不知道。对不起,您希望从
res[0]+=0?@Pshemo或在什么情况下需要执行…非常感谢。现在看来很容易就规范而言,说
null
输入包含零赔率和零偶数是错误的。它应该只是一个无效的输入,并相应地抛出一个异常。但是如果这是你必须跳转的环…@Elliott“或偶数”只对正数组元素有效。或者偶数:
if(array!=null){for(int-value:array){res[value%2==0?0:1]+=value;}}
对没有解释投了反对票。结果和问题代码的结果有什么不同?
for (int i = 0; i < len; i++) {
    int n = Math.abs(array[i] % 2);
    res[n] += array[i];
}
import java.util.Arrays;

public class SumOfEvenOdd {
    public static void main(String... args) {
    int[] arr1 = { 30, 18, 2, 83, 20, 71 };
    System.out.println(String.format("array1: %s,  output %s",
        Arrays.toString(arr1),
        Arrays.toString(getSumOfEvensAndOdds(arr1))));
    int[] arr2 = { 14, 11, 10, 67, 41 };
    System.out.println(String.format("array2: %s,  output %s",
        Arrays.toString(arr2),
        Arrays.toString(getSumOfEvensAndOdds(arr2))));
    int[] arr3 = { 36, 24, -82, 29, 44, -3, -100, -5, 49 };
    System.out.println(String.format("array3: %s,  output %s",
        Arrays.toString(arr3),
        Arrays.toString(getSumOfEvensAndOdds(arr3))));
    }

    public static int[] getSumOfEvensAndOdds(int[] arr) {
        int[] res = new int[2];
        if (arr == null)
            return res;
        for (int i : arr) {
            if (i % 2 == 0) {
                res[0] += i;
            } else {
                res[1] += i;
           }
        }
        return res;
    }
}
array1: [30, 18, 2, 83, 20, 71],  output [70, 154]
array2: [14, 11, 10, 67, 41],  output [24, 119]
array3: [36, 24, -82, 29, 44, -3, -100, -5, 49],  output [-78, 70]