0到100之间的奇数,并将它们添加到java中的数组中

0到100之间的奇数,并将它们添加到java中的数组中,java,Java,我看到了关于可变性的问题。 编写一个函数: class solution{ public int[] solution(int X, int Y);} 如果给定X=0,Y=100,则返回0到100之间奇数的整数数组 我编写了以下代码: import java.util.*; public class Solution{ int X = 0; int Y = 10; ArrayList<Integer> arrli = new ArrayList<In

我看到了关于可变性的问题。 编写一个函数:

class solution{ public int[] solution(int X, int Y);}
如果给定X=0,Y=100,则返回0到100之间奇数的整数数组

我编写了以下代码:

import java.util.*;

public class Solution{
    int X = 0;
    int Y = 10;
    ArrayList<Integer> arrli = new ArrayList<Integer>();
    public int[] solution( int X, int Y){
        for(int i = X; i<=Y;i++){
            if(i % 2 != 0){
               arrli.add(i);
            }
        }return (int[])arrli.toArray();
    }
}

您不应该对此解决方案使用类,您可以使用一个方法来创建此列表

如果您使用的是Java8和更新版本,那么可以使用

public ArrayList<Integer> createIntegerRangeWithJumps(Integer start, Integer jumpIn , Integer size){
return IntStream.iterate(start , n -> n + jumpIn).limit(size).toList();
}
public ArrayList createIntegrationErrangeWithJumps(整数开始、整数插入、整数大小){
返回IntStream.iterate(start,n->n+jumpIn).limit(size).toList();
}

调用
CreateIntegrationWithJumps(1,2,50)
将产生通缉名单

您的标题具有误导性。您的代码在创建奇数数组时看起来是正确的,但也有较短的代码

关于错误:

error: incompatible types: Object[] cannot be converted to int[]
    }return (int[])arrli.toArray();
我想这是你的主要问题:

您正在创建一个
Integer
对象数组,而不是
int
对象数组。您可以将整数[]转换为整数[]。但更简单的方法是从头创建int[]数组。
有关转换,请参见:

另一个使用Java 8的解决方案(假设X和Y都包含在内)


@因此,您似乎正在努力将
ArrayList
转换为
int[]
。在这种情况下,有多个答案显示了不同的方法。有没有更好的方法来完成上述返回0到100之间的奇数整数数组的问题。当然。从第一个奇数开始,每次迭代只添加2个,而不是检查其余部分。这应该是一个注释。现在我的return语句出现错误。导入java.util.*;公共类解决方案{int X=0;int Y=10;ArrayList arrli=new ArrayList();公共int[]解决方案(int X,int Y){for(int i=X;i检查开始括号和结束括号的数量。如果您使用的是Eclipse,请使用Command-A Command-i(源代码->正确缩进)检查你的代码。return应该在函数内。它在类外!@ChristianFries我使用的是免费的在线编辑器,因此我无法使用这些工具。你建议我将return语句移到哪里。请注意,你正在浏览100个项目,你只对其中50个项目感兴趣。这是一个性能问题,不是大问题,而是更好的方法是在我的answer@Itaywazana我只是不确定如何在我的代码中实现这一点。@softwareelaceng我把我的答案做得更详细了
error: incompatible types: Object[] cannot be converted to int[]
    }return (int[])arrli.toArray();
int[] oddNums = IntStream.range(X, Y+1).filter(i -> i%2 != 0).toArray();