有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

编写一个函数,该函数接受一个数组作为输入,并返回一个由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;
    
}

共 (2) 个答案

  1. # 1 楼答案

    在尝试获取array.length之前,需要测试null。而且,在循环中只需要一个if-else(一个数字是偶数或奇数,没有第三状态)。像

    public int[] getSumOfEvensAndOdds(int[] array) {
        // Student code begins here
        int[] res = { 0, 0 };
    
        if (array == null) {
            return res;
        }
        int len = array.length;
        for (int i = 0; i < len; i++) {
            if (array[i] % 2 == 0) {
                res[0] += array[i];
            } else {
                res[1] += array[i];
            }
        }
        return res;
    }
    

    即使循环中没有if这样

    for (int i = 0; i < len; i++) {
        int n = Math.abs(array[i] % 2);
        res[n] += array[i];
    }
    
  2. # 2 楼答案

    试试这个

    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;
        }
    }
    

    Output

    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]