有关如何修复代码的任何提示?

时间:2014-12-06 08:47:10

标签: java arrays

问题在于:给定数组arr时,返回一个数组,该数组仅包含arr原始顺序中的奇数整数。

一些例子:

  • youMakeMeOdd({1,2,3})→{1,3}
  • youMakeMeOdd({1,3,5})→{1,3,5}
  • youMakeMeOdd({2,4,6})→{}

这是我的代码:

public int [] youMakeMeOdd(int [] arr)
{
    int x=0;
    for (int i=0; i<arr.length; i++)
    {
        if (arr[i]%2==1)
        {
            x++;
        }
    }

     for (int i=0, m=0, j=0; j<x; m++, j++)
     {
        if (arr[i]%2==1)
        {
            arr[m]=arr[j];
        }
     }   
 return arr;
}

非常感谢!

1 个答案:

答案 0 :(得分:1)

Java中的数组是固定大小的:它们的长度无法更改。

因此,您需要创建并返回一个新数组,因为结果可能包含较少的元素。

确定输出数组的大小(计算奇数值)以了解结果数组的长度,然后迭代输入并将奇数加到输出中。

示例:

public static int[] youMakeMeOdd(int[] arr) {
    int count = 0;
    for (int n : arr)
        if (n % 2 == 1)
            count++;

    int[] result = new int[count];

    int i = 0;
    for (int n : arr)
        if (n % 2 == 1)
            result[i++] = n;

    return result;
}