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<nums.length-m){
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));
}
}
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 【程序36】题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 【程序37】题目:有n...
- 输入一个正整数和n个有序整数(从小到大),输入一个数试要求按照原来的顺序插入,如果本就存在则删除改数字
- 1二进制中1的个数 【题目】输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 【考察点】位运算 【...