Java 将数组值重新排列到新数组中

Java 将数组值重新排列到新数组中,java,arrays,loops,Java,Arrays,Loops,我编写了这段代码,它应该获取数组中的最后8个值,并将它们反转,然后放入新numbs[]数组的第一个插槽中。但是,我也希望numbersArray中的{1,1,1,1,1,1,4}值添加到numbs[]数组中最后8个值之后,而不反转。这应该是动态的,所以如果numberArray[]中有24个值,则应该有3个组,其中偶数组的值要反转 numbersArray = new int[] { 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 1 }; int[]

我编写了这段代码,它应该获取数组中的最后8个值,并将它们反转,然后放入新numbs[]数组的第一个插槽中。但是,我也希望numbersArray中的{1,1,1,1,1,1,4}值添加到numbs[]数组中最后8个值之后,而不反转。这应该是动态的,所以如果numberArray[]中有24个值,则应该有3个组,其中偶数组的值要反转

numbersArray = new int[] { 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 2, 2, 2, 2, 2, 1 };
int[] numbs =  new int[numbersArray.length];

for (int i = 0; i < numbersArray.length; i++) {
        numbs[(i % 16) < 8 ? i : (8 - (i % 8) - 1)] = numbersArray[i];
}
我希望阵列实际显示:

numbs[] = [1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 4]

将此添加到您的代码中

for (int i = 8; i < numbersArray.length; i++) {
    numbs[i] = numbersArray[i-8];
}
for(int i=8;i
似乎您想要使用数组。虽然使用集合也可以轻松完成

下面的代码有一些限制。 数组大小>=16 可以进一步优化

int[] numbersArray = new int[] { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int[] newArr = new int[numbersArray.length];

int x =8,y=8,j=-1;

for(int i = numbersArray.length-1;i>-1;i--){
  if(x!=0){
    newArr[++j] = numbersArray[i];
    if(x==1){y=8;}
    x--;
  }
  else{
    newArr[j + y ]= numbersArray[i];
    if(y==1){x=8;j=j+8;}
    y--;
  }
}

for(int v:newArr)
    {System.out.println(v);}

  }

所以如果有两个组,则希望将第二个组反转,并将其作为第一个组。发生在第一组中的唯一一件事就是把它放在第二组中。但是当有3组时,第二组将被保留,并且?在第一组中放一个字母?其他两组的情况如何?第三个组是否保持原来的位置?数据集的最后一个组应始终是新数组中的第一个组。因此,第三组不应反转,因为它是奇数组。然后,第二组应该在第三组之后反转并放入新的数据集中,最后是numbs[]数组中的第一组。
int[] numbersArray = new int[] { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int[] newArr = new int[numbersArray.length];

int x =8,y=8,j=-1;

for(int i = numbersArray.length-1;i>-1;i--){
  if(x!=0){
    newArr[++j] = numbersArray[i];
    if(x==1){y=8;}
    x--;
  }
  else{
    newArr[j + y ]= numbersArray[i];
    if(y==1){x=8;j=j+8;}
    y--;
  }
}

for(int v:newArr)
    {System.out.println(v);}

  }