题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
分析:比如有4个数n=4;
1 2 3 4
各个数向后移动2位m=2,变为
1 2 3 4
将最后m个数,即将最后2个数变成前面的2个数变为
3 4 1 2
1 import java.util.Arrays;
2 import java.util.Scanner;
3 public class Prog36 {
4 public static void main(String[] args) {
5 //获取用户输入数据
6 Scanner scan=new Scanner(System.in);
7 System.out.println("请输入想要输入的整数个数n:");
8 int n=scan.nextInt();
9 int []arr=new int[n];
10 System.out.println("请依次输入这n个整数:");
11 for(int i=0;i<n;i++) {
12 arr[i]=scan.nextInt();
13 }
14 System.out.println("请输入想要移动的位数m:");
15 int m=scan.nextInt();
16 scan.close();
17 //输出原始数据
18 System.out.println("输入的数组是:"+Arrays.toString(arr));
19 arr.toString();
20 //调用函数输出移动后的数组
21 System.out.println("移动位置之后的数组是:"+move(arr,n,m));
22 }
23 //编写函数实现题目移动位置功能
24 public static String move(int[]arr,int n,int m) {
25 //新建一个数组拷贝原来的数组,使原来的数组长度+m
26 int []arr2=new int[arr.length+m];
27 for(int j=0;j<arr2.length-m;j++) {//从数组的m位开始,将原来的数组拷贝到新数组中
28 if(j<m) {
29 arr2[j]=arr[n-m+j];//将数组的后几位要移动的数字放在新数组的前面
30 }else {
31 arr2[j]=arr[j-m];//将数组的剩下的位数放近新数组中
32 }
33 }
34 //将移动位置之后的新数组的元素拷贝至原数组中
35 for(int t=0;t<n;t++) {
36 arr[t]=arr2[t];
37 }
38 return Arrays.toString(arr);
39
40 }
41 }
42 /*运行结果
43 请输入想要输入的整数个数n:
44 4
45 请依次输入这n个整数:
46 1
47 2
48 3
49 4
50 请输入想要移动的位数m:
51 2
52 输入的数组是:[1, 2, 3, 4]
53 移动位置之后的数组是:[3, 4, 1, 2]
54 */