题目: 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
解题关键:需要新建个数组使得原数组可以做到整体往后移动M位
思路:1.创建个有n个整数的数组
2.输出n个数字,存储到数组中
3.遍历原数组
4.输出前面各数顺序向后移m个位置
5.创建一个新数组长度为(n+m)
6.把旧数组的值存储到新数组中
7.整体数组往后移动m位
8.m个数变成最前面的m个数
9.遍历新数组
过程: 接下来我们根据我们的解题思路来一步步写代码
1.创建个有n个整数的数组
Scanner sc = new Scanner(System.in);
System.out.println("请输入您需要输入多少个整数:");
int n = sc.nextInt();
int[] nums = new int[n];
2.输出n个数字,存储到数组中
System.out.println("请依次输入" + n + "个整数");
for (int i = 0; i < nums.length; i++) {
System.out.println("第" + (i + 1) + "个数字为:");
int num = sc.nextInt();
nums[i] = num;
}
3.遍历原数组
System.out.print("原数组为:");
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();// 换行
4.输出前面各数顺序向后移m个位置
System.out.print("输出前面的各数顺序向后移动的位置:");
int m = sc.nextInt();
5.创建一个新数组长度为(n+m)
int[] newNums = new int[n + m];
6.把旧数组的值存储到新数组中
for (int i = 0; i < nums.length; i++) {
newNums[i] = nums[i];
}
System.out.println();
7.整体数组往后移动m位
for (int i = newNums.length - 1; i-m >= 0 ; i--) {
newNums[i] = newNums[i-m];
}
8.m个数变成最前面的m个数
for (int i = 0; i < m; i++) {
newNums[i] = newNums[newNums.length -(m-i)];
}
9.遍历新数组
System.out.print("新数组为:");
for (int i = 0; i < nums.length; i++) {
nums[i] = newNums[i];
System.out.print(nums[i] + " ");
}
完整结果如下:
为了方便大家使用,下面附上源码:
- // 1.创建个有n个整数的数组
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入您需要输入多少个整数:");
- int n = sc.nextInt();
- int[] nums = new int[n];
-
- // 2.输出n个数字,存储到数组中
- System.out.println("请依次输入" + n + "个整数");
- for (int i = 0; i < nums.length; i++) {
- System.out.println("第" + (i + 1) + "个数字为:");
- int num = sc.nextInt();
- nums[i] = num;
- }
-
- // 3.遍历原数组
- System.out.print("原数组为:");
- for (int i = 0; i < nums.length; i++) {
- System.out.print(nums[i] + " ");
- }
-
- System.out.println();// 换行
-
- // 4.输出前面各数顺序向后移m个位置
- System.out.print("输出前面的各数顺序向后移动的位置:");
- int m = sc.nextInt();
-
- // 5.创建一个新数组长度为(n+m)
- int[] newNums = new int[n + m];
-
- //6.把旧数组的值存储到新数组中
- for (int i = 0; i < nums.length; i++) {
- newNums[i] = nums[i];
- }
- System.out.println();
- //7.整体数组往后移动m位
- for (int i = newNums.length - 1; i-m >= 0 ; i--) {
- newNums[i] = newNums[i-m];
- }
-
- //8.m个数变成最前面的m个数
- for (int i = 0; i < m; i++) {
- newNums[i] = newNums[newNums.length -(m-i)];
- }
-
- //9.遍历新数组
- System.out.print("新数组为:");
- for (int i = 0; i < nums.length; i++) {
- nums[i] = newNums[i];
- System.out.print(nums[i] + " ");
- }
明日练习:定义一个N*N二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出;
大家可以自己写写,明天中午12点我准时发出我的写法哦,明天12点不见不散
一生朋友一生情,一生有你才会赢;千山万水总是情,点个关注行不行!