package Demo36Number_Roll;
import java.util.Arrays;
import java.util.Scanner;
/**
* 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
*/
/*
分析:1.这n个数是由用户输入的,m也是用户输入的
2.这n个数装到数组里面应该会好处理些
3.新建一个长度跟原数组一样的数组
4.遍历两个数组,对应m值进行数据转移
*/
public class Number_Roll {
public static void main(String[] args) {
System.out.println("输入n个整数,再输入m,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数");
//获取用户的输入,并解析为一个数组
Scanner sc = new Scanner(System.in);
System.out.println("请直接输入数组元素,(以逗号作为间隔)");
String str = sc.next();
//分割用户输入得到一个字符串数组
String[] strs = str.split(",|,");
// 遍历这个字符串数组,将每个字符串解析为一个Integer,并装到Integer数组中
int[] nums = new int[strs.length];
int[] exchange = new int[nums.length];
int m =0;
try {
for (int i = 0; i < strs.length; i++) {
nums[i] = Integer.parseInt(strs[i]);
}
//新建一个长度一样的数组
System.out.println("原数组:"+ Arrays.toString(nums));
//让用户输入m的值
System.out.println("请输入向后移动的位数m:");
m = sc.nextInt();
}catch (NumberFormatException e){
System.out.println("你输入有误,请输入数字,其它字符不支持");
}
// 遍历两个数组,因为长度一样,所以一个for循环就足够
for (int i = 0; i < nums.length; i++) {
// m个数前的情况
if(i
exchange[i+m]=nums[i];
}else if(i>=nums.length-m){
// 最后的m个数放到新数组的最前面
for (int j = 0; j < m; j++) {
exchange[j]=nums[nums.length-m+j];
}
// 转换完成,退出循环
break;
}
}
// 输出转换后的结果
System.out.println("转换后:"+Arrays.toString(exchange));
}
}