下面是使用a数组本身完成:

package 数组元素k位右移;

/**
* 数组向又移动k位。 0<k<n
*
* @author SeeClanUkyo 将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
*/
public class ArrayMoveK { public static void main(String[] args) { int k = 3;
int[] a = { 1, 2, 3, 4, 5 }; arrayMoveK(a, k); } public static void arrayMoveK(int[] a, int k) { //获取长度
int l = a.length;
//获取最大下标值
int maxIndex = l - 1;
//for循环使末尾及开始更换位置
for (int i = 0; i < k; i++) {
//获取数组最大下标的数值
int last = a[maxIndex];
for (int j = 0; j < maxIndex; j++) {
//将数组中的其他元素都右移一位 , 第一次获取时,maxIndex-j为-0为maxIndex本身
a[maxIndex - j] = a[maxIndex - 1 - j];
}
//将本次最末尾的数值传递给数组开始
a[0] = last;
}
//遍历输出新的数组
for (int x : a) {
System.out.print(x + " ");
}
} }

下面是借助第二个数组:(这样的话就简单的多了)

package 数组元素k位右移;

/**
* 数组向又移动k位。 0<k<n
*
* @author SeeClanUkyo 将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
*/
public class ArrayMoveK { public static void main(String[] args) { int k = 3;
int[] a = { 1, 2, 3, 4, 5 }; arrayMoveK(a, k); } public static void arrayMoveK(int[] a, int k) { //获取长度
int l = a.length;
//获取最大下标值
int maxIndex = l - 1;
//for循环使末尾及开始更换位置
for (int i = 0; i < k; i++) {
//获取数组最大下标的数值
int last = a[maxIndex];
for (int j = 0; j < maxIndex; j++) {
//将数组中的其他元素都右移一位 , 第一次获取时,maxIndex-j为-0为maxIndex本身
a[maxIndex - j] = a[maxIndex - 1 - j];
}
//将本次最末尾的数值传递给数组开始
a[0] = last;
}
//遍历输出新的数组
for (int x : a) {
System.out.print(x + " ");
}
} }