【问题标题】:Store odd numbers in array with for loop使用for循环将奇数存储在数组中
【发布时间】:2016-10-15 18:39:23
【问题描述】:

我正在尝试创建一个名为oddsarray,它使用for 循环将-638 之间的所有奇数存储到其中。

int[] odds = new int[22];

for (int i = -6, m = 0; i <= 38 && m < 22; i++, m++) {
    if (i % 2 != 0) {
        odds[m] = i;
    }
}

但是不工作。任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: java arrays loops for-loop


    【解决方案1】:

    每次循环运行时,您都会增加 m。因此,对于i = -6,您将存储在索引 0,但在 i = -4,您将存储在索引 2。您正在跳过索引。更好的方法是利用我们知道每个其他数字都是奇数的事实,并且每次将循环增加 2:

    int[] odds = new int[22];
    for (int i = -5, m = 0; i <= 38; i = i + 2, m++) {
        odds[m] = i;
    }
    

    【讨论】:

    • @Cyber​​Maestro 很乐意为您提供帮助!如果这有用,请点赞并接受 =]
    【解决方案2】:

    您当前允许跟踪数组中赔率索引的变量m 随着奇数的实际值移动。要解决此问题,请将m 数组索引计数器移到检查赔率的for 循环之外:

    int[] odds = new int[22];
    int m = 0;
    
    for (int i = -6; i <= 38; i++) {
        if (i % 2 != 0) {
            odds[m] = i;
            ++m;
        }
    }
    

    【讨论】:

      【解决方案3】:

      只有当你存储一个新的奇数时,你才必须增加 m 所以删除你的 for 语句中的 m++ 并修改你的赋值 odds[m++] = i;

      【讨论】:

        【解决方案4】:

        您每次迭代都会增加m

        int[] odds = new int[22];
        int oddCount = 0;
        for (int i = -6; i <= 38;i++) {
            if (i % 2 != 0) {
                odds[oddCount] = i;
                oddCount++;
            }
        }
        

        【讨论】:

          【解决方案5】:

          最好的解决方案是同时使用 Tim 和 nhouser 的建议:

          int[] odds = new int[22];
          int m = 0;
          for (int i = -5; i < 38; i += 2) {
            odds[m++] = i;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-08-03
            • 2021-09-12
            • 1970-01-01
            • 1970-01-01
            • 2022-08-16
            • 2012-08-20
            • 1970-01-01
            • 2013-11-26
            相关资源
            最近更新 更多