【问题标题】:Coding bat ap exam practice编码 bat ap 考试练习
【发布时间】:2017-04-27 02:41:21
【问题描述】:

给定一个正整数数组,返回一个长度为“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;
}

你能解释一下为什么它不起作用吗?

【问题讨论】:

  • 你能解释一下为什么它不起作用吗?

标签: java arrays


【解决方案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]; 

【讨论】:

    【解决方案2】:

    如前面的解决方案所述,您将“w”增加的次数超过了新数组中的可用空间。要修复该错误,您需要一个语句来在新数组被填充后停止递增。 w &lt; count 将检查您的数组是否有足够的空间。

    if (w < count && nums[i]%2 == 0) {
        a[w] = nums[i];
        w++;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      相关资源
      最近更新 更多