给定一组正整数,返回一个长度为“count”的新数组,其中包含原始数组中的第一个偶数。原始数组至少包含“count”偶数。
copyEvens([3, 2, 4, 5, 8], 2) → [2, 4]
copyEvens([3, 2, 4, 5, 8], 3) → [2, 4, 8]
copyEvens([6, 1, 2, 4, 5, 8], 3) → [6, 2, 4]
我的解决方案
public int[] copyEvens(int[] nums, int count) {
int [] a= new int[count];
int w=0;
for (int i= 0; i<nums.length ; i++)
{
if(nums[i]%2==0)
a[w]=nums[i];
w++;
}
return a;
}
你能解释一下为什么它不起作用吗?
答案 0 :(得分:1)
您在if(nums[i]%2==0)
和下一个两个语句周围没有大括号。因此if
仅适用于第一个,并且您将w
增加太多次。添加大括号。
if (nums[i] % 2 == 0) {
a[w] = nums[i];
w++;
}
或使用一个复合语句(但我更喜欢第一个解决方案)
if (nums[i] % 2 == 0)
a[w++] = nums[i];
答案 1 :(得分:0)
如先前解决方案中所述,您将“ w”增加的次数比新阵列中的可用空间更多。要解决该错误,一旦新数组填充完毕,您需要一条语句来停止递增。 w < count
将检查您的阵列是否还有足够的空间。
if (w < count && nums[i]%2 == 0) {
a[w] = nums[i];
w++;
}