/** * @author WanJl * @version 1.0 * @title Exercises02 * @description 课堂练习02:定义一个整数数组 `{1, 2, 3, 4, 5}`, * 将数组中的所有元素向右移动 2 个位置。超出数组范围的元素循环移到数组开头(循环右移)。 * @create 2026/7/16 */ public class Exercises02 { public static void main(String[] args) { int[] arr={1, 2, 3, 4, 5}; int k= 2; //右移位数 //如果k大于数组长度,要取模 k=k% arr.length; System.out.print("移动前:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println(); //整体右移k位(循环右移) for (int i = 0; i < k; i++) { //保存最后一个元素 int last=arr[arr.length-1]; //从后往前,每个元素向后移动1位 for (int j = arr.length-1; j>0; j--) { //循环数组长度的轮数 arr[j]=arr[j-1]; //把倒数第2位赋值给最后1位 } //把最后1位给第0位 arr[0]=last; } System.out.print("移动后:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } /* 解题思路过程 1 2 3 4 5 先不管移动几位,就只研究 全体向右移动1位。 1、先把最后一个元素保存起来。 2、倒数第2位,赋值给倒数第1位。 3、倒数第3位,赋值给倒数第2位。 4、倒数第4位,赋值给倒数第3位。 5、倒数第5位(第1位),赋值给倒数第4位。 6、把保存起来的最后一个元素,赋值给倒数第5位(第1位) //保存最后一个元素 int last=arr[arr.length-1]; 整过流程使用循环,就不能是正循环,而是倒着循环, 从 arr[arr.length-1] -> arr[0] 所以: for(j=arr.length-1;j>0;j--){ //前一个元素赋值给后一个元素 arr[j]=arr[j-1]; } 最后,再把最后一个元素,赋值给第1个元素 arr[0]=last; 现在我们再加上 【数组中的所有元素向右移动 20 个位置】 定义变量 k 存移动位置 在刚刚的移动的代码外,增加一个循环 for(int i=0;i