题目:一个数组有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。要求从控制台定义数组长度,并从控制台输入数据及顺序后移的位数。【位数不超过数组长度】
package test;
import java.util.Scanner;
public class Pratice4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数组的长度:");
//接收控制输入的数组长度
int length = scanner.nextInt();
//定义一个长度为length的数组,用来存放元素
int[] a = new int[length];
for(int i=0;i<length;++i) {
System.out.println("请输入第"+(i+1)+"个整数:");
//元素存放数组中
a[i] = scanner.nextInt();
}
//增强for循环输出数组元素
System.out.print("你输入的数组为:");
for (int i:a) {
System.out.print(i + " ");
}
System.out.print("\n请输入向后移动的位数:");
int run = scanner.nextInt();
//定义一个辅助数组
int[] b = new int[run];
for (int i = 0; i < run; i++) {
b[i] = a[length - run + i];
}
for (int i = length - 1; i >= run; i--) {
a[i] = a[i - run];
}
for (int i = 0; i < run; i++) {
a[i] = b[i];
}
System.out.print("位移后的数组是:");
for (int i = 0; i < length; i++) {
System.out.print(a[i] + " ");
}
}
}
输出:
请输入数组的长度:
8
请输入第1个整数:
9
请输入第2个整数:
12
请输入第3个整数:
6
请输入第4个整数:
3
请输入第5个整数:
7
请输入第6个整数:
5
请输入第7个整数:
1
请输入第8个整数:
16
你输入的数组为:9 12 6 3 7 5 1 16
请输入向后移动的位数:4
位移后的数组是:7 5 1 16 9 12 6 3