创建在java中存储-6到38的赔率的数组

Ion*_*rin 1 java

我正在学习Java,我在阵列章节中找到了一个我无法解决的练习.

演习说:

编写创建一个名为的数组的代码,odds并使用for循环将所有奇数在-6和38之间存储到其中.使数组的大小足够大以存储数字.

我能想出的唯一解决方案是:

import java.util.Arrays;

public class exerciseOddsArray {
    public static void main(String[]args){

        oddsArray();
    }
    public static void oddsArray(){
        int odds = 0;
        for (int i = -6; i <= 38; i++){
            if (i % 2 == 1){
                odds++;
            }
        }
        int[] numbers = new int[odds];
        for (int i = 0; i < numbers.length; i ++){
                for (int j = -6; j <= 38; j++){
                    if(j % 2 == 1){
                        numbers[i] = j;
                    }
            }
        }
        System.out.println(Arrays.toString(numbers));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,该程序打印:

[37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么.

小智 6

这里不需要嵌套的FOR循环.只需创建一个整数变量i来跟踪数组中的位置,并在添加每个新项目时增加它.PS ...数组应该根据赋值的规格被称为"赔率".我建议重命名你用来计算其他东西的赔率数量的变量(例如numberOfOdds)

int[] odds= new int[numberOfOdds];
int i = 0;

for (int j = -6; j <= 38; j++)
{
  if(j % 2 == 1)
  {
      odds[i++] = j;
   }
}
Run Code Online (Sandbox Code Playgroud)