package com.demo.sw.test; /** * * 循环移动一个数组中的数字: * 如数数组:1,2,3,4,5,6,7 * 向前移动 3 位得到的结果是: * 4,5,6,7,1,2,3 * @author Mr.J * */ public class ArrayMove { public static void main(String[] args) { int[] arr = new int[12]; // 初始化要移动的数组 for (int i = 0; i < arr.length; i++) { arr[i] = i + 1; } int num = 17; // 要移动的位数 moveNums(arr, num); // 调用要移动的方法 // 显示移动的结果 System.out.println("调用有返回值的方法:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } /* * 方法 需要传进要移动的数组和移动的位移量 */ public static int[] moveNums(int[] arr, int num) { if(num > arr.length){ // 如果移动的位移量大于数组的长度,则会多转几圈 num = num % arr.length; } // 声明一个数组来存储数组前边被移动的数字 int[] copy = new int[num]; // 把原数组中要移动的数字存储起来 for (int i = 0; i < copy.length; i++) { copy[i] = arr[i]; } // 移动数组 for (int i = 0; i < arr.length - num; i++) { arr[i] = arr[i + num]; } // 移动完后把原来的数字追加到数组后边 for (int i = 0; i < copy.length; i++) { arr[arr.length - num + i] = copy[i]; } return arr; } }