Java 有关于如何修复我的代码的提示吗?

Java 有关于如何修复我的代码的提示吗?,java,arrays,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++) {

问题是:当给定一个数组
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;
}
public int[]youMakeMeOdd(int[]arr)
{
int x=0;

Java中的for(int i=0;i数组的大小是固定的:它们的长度不能更改

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

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

例如:

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;
}

你可以使用arraylist吗?使用arraylist,
List List=new arraylist(Arrays.asList(array));
List.remove(1);//删除位置处的元素
1实际上我不太确定是否允许使用arraylist。