在java中我想用for循环从整数数组中拉出奇数位置的每个数字.我犯了什么错误?

Ton*_*hen 1 java arrays algorithm for-loop

所以这是我从整数数组中取出的方法(这个数组的长度是偶数).

 public static int[] oddPosition (int[] array) {
    int [] oddNumbers = new int[array.length / 2];
    for (int i = 0; i < array.length; i++) {
      int j = 0;
      //System.out.println(i);//test
      //printArray(oddNumbers); //test
      if ((i + 1) % 2 != 0) {
        //System.out.println(i);//test
        oddNumbers[j] = array[i];
        j ++;
      }
    }
    return oddNumbers;
  }
Run Code Online (Sandbox Code Playgroud)

它没有用.我尝试oddNumbers在每个循环中打印出我的新数组中的情况来调试此方法.我用作1 2 8 4 6 9此方法的参数.我发现一个非常奇怪的条件是,when i = 0, (i + 1) % 2 != 0, then array[0](which is 1) should be assigned to oddNumbers[0]. and oddNumbers should be [1, 0, 0, 0] at first loop然而第一个循环的oddNumbers是1, 0, 0, 2.来自......的2来自哪里?我期望的这种方法的最终结果是1, 8, 6它给了我6, 0, 0.那我的方法有什么问题?谢谢!

Con*_*nor 8

怎么样,而不是循环遍历每个索引然后测试它是否奇怪,你开始循环为1并且每次增加2:

例:

for(int i = 1; i < array.length; i+=2)
Run Code Online (Sandbox Code Playgroud)