Java50道经典习题-程序36 移动位置
题目:有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 */
The only way to do great work is to love what you do.