我正在编写一个代码,将数组的所有元素移回一个,并将最后一个元素移到数组的前面。
我非常希望我的程序这样做:
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/