java - 在Java中将数组的所有元素移回一个

标签 java arrays

我正在编写一个代码,将数组的所有元素移回一个,并将最后一个元素移到数组的前面。

我非常希望我的程序这样做:

int[] array = new int[] {1, 2, 3};
// do something such that array will become {3, 1, 2}

我的代码如下:

int[] array = new int[3];


for(int i = 0; i < array.length; i++)
{
  array[0] = 1;
  array[1] = 2;
  array[2] = 3;
  int last = array[array.length-1];
  array[i] = array[i+1];
  array[0] = last;

  System.out.println(array[i]);
}

我认为将 1 添加到数组的“i”,并将数组的最后一个元素存储在“last”中并将其分配给数组 [0] 就可以解决问题,但我只是得到 {3, 3} 在输出中显示“java.lang.ArrayIndexOutOfBoundsException: 3.”

最佳答案

如果你真正想要的是旋转它(听起来有点像)。 使用 Collections.rotate() :

Collections.rotate(Arrays.asList(array), 1);

其中1是步数(距离)

如果您不想将数组转换为列表,您可以使用像这样的简单方法手动进行旋转(例如)

向左走:

void rotateArrayLeftByOne(int array[])
{
    // get last index of array
    int lastIndex = array.length - 1; 
    // save first element
    int oldFirst = array[0]; 

    // copy the elements from  right to left
    for (int i = 0; i < lastIndex; i++) 
        array[i] = array[i + 1];

    // put the first element last
    array[lastIndex] = oldFirst;
}

向右走:

void rotateArrayRightByOne(int array[])
{
    // get last index of array
    int lastIndex = array.length - 1; 
    // save last element
    int oldLast = array[lastIndex]; 

    // copy the elements from  left to right
    for (int i = lastIndex; i != 0; i--) 
        array[i] = array[i - 1];

    // put the last element first
    array[0] = oldLast;
}

关于java - 在Java中将数组的所有元素移回一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047789/

相关文章:

java - 我应该将在类级别定义的 Executor 服务实例设为静态吗?

arrays - 为什么我不能在 ruby​​ 中的数组上使用 Match 方法?

java - 字符串到数组到字符串的 C# Java 问题

python - 如果向用户定义的类传递形状不正确的数组,则使用 python 引发异常

java - JPA - 为什么使用@JoinColumn?

java - 是否可以用 Java 创建自己的 XMPP 服务器

java - 获取 InterruptedException 以忽略中断

java - NEHE 第 06 课在 LWJGL 中损坏,我应该使用什么来代替 org.lwjgl.devil.IL?

python - 查找数组一中最接近数组二元素的元素

c++ - 如何将数组 float* 转换为 float**?