编写一个函数,该函数接受一个int数组,并将偶数和奇数值的和作为数组返回。 (完整阅读说明)

时间:2018-07-07 20:13:15

标签: java arrays

编写一个将数组作为输入并返回2个数字的数组的函数。返回的数组包含输入中的偶数和和奇数。

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

示例:

输入:   [30,18,2,83,20,71]  输出:   [70,154]

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

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

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

PS我是初学者

__setitem__

2 个答案:

答案 0 :(得分:2)

您需要先测试null,然后才能获得array.length。而且,您只需要在循环中使用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];
}

答案 1 :(得分:0)

尝试这个

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]