Java 返回仅包含奇数的数组

Java 返回仅包含奇数的数组,java,arrays,methods,Java,Arrays,Methods,我只需要返回奇数数组,例如[1,3,5]。作为学校教育的一部分,我被要求这样做,我看不出哪里出了问题 public static int[] odds(int numOdds) { int[] odds = numOdds; for (int i=0; i<odds.length; i++) { if (odds[i] %2 != 0) { return odds; } } } public static v

我只需要返回奇数数组,例如
[1,3,5]
。作为学校教育的一部分,我被要求这样做,我看不出哪里出了问题

public static int[] odds(int numOdds) {
    int[] odds = numOdds;
    for (int i=0; i<odds.length; i++) {
        if (odds[i] %2 != 0) {
            return odds;
        }
    }
}

public static void main(String[] args) {
    int[] theOdds = odds(3);
    System.out.println(theOdds[0] + ", " + theOdds[1] + ", " + theOdds[2]);
}
public static int[]赔率(int numods){
int[]赔率=numods;

对于(int i=0;i如果要从数组中返回赔率,则应首先将其作为参数传递,并且应在If语句后将赔率存储在新数组中。 您应该在第一次使用动态列表,因为在您可以轻松地将ArrayList转换为普通数组之后,您不知道有多少可能性。 大概是这样的:

public static int[] odds(int[] arrayOfNumber) {

List<Integer> odds = new ArrayList<Integer>();

for (int i=0; i<arrayOfNumber.length; i++) {
    if (arrayOfNumber[i] %2 != 0) {
        odds.add(arrayOfNumber[i]);
    }
  }
  return odds.toArray();
}
公共静态int[]赔率(int[]数组编号){
列表赔率=新的ArrayList();

对于(inti=0;i这是您发布的代码。请参阅下面的注释

public static int[]赔率(int numods){
//int[]赔率=numods;//需要是int[]赔率=new int[numods]才能
//存储这些值。这是您将使用的数组
//返回。
int[]赔率=新的int[numods];
int start=1;//您需要有一个起点

对于(int i=0;i,使用本机Java 8 streams API可以节省时间:

int[] odds = Arrays.stream(arrayOfNumbers).filter(number -> number%2 != 0).toArray();

Streams提供了许多方法来加快您的作业

编译器错误消息说了什么?您读过吗?在类型不是int而是int[]的变量中存储int听起来不错吗?您的代码从不在数组中存储任何内容看起来正常吗?您正在为整数数组分配一个整数。更改为
int[]赔率=new int[numods]
编译器甚至会准确地告诉你出了什么问题。如果你一遇到麻烦就举手,你永远学不到任何东西。为了学习,与问题作斗争是很重要的。你正在向方法传递
int
值。你想要前三个奇数吗?还是想要传递一个带s的整数数组请在你的问题中澄清这一点。谢谢你的评论。我一直在读这篇文章,我简直无法理解它和我的“导师”这并没有给我时间去解释,让我明白。numOdds实际上是一个正整数,表示我必须存储在数组中的奇数的数量。这个解释对于我理解我所缺少的有理数是非常好的。非常感谢