数组循环移动(娱乐代码)

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;

	}

}
原文地址:https://www.cnblogs.com/icenter/p/1988836.html