编写一个将数组作为输入并返回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__
答案 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]