初始化一个10元素的一维整数数组,从键盘输入一个整数n,将一维数组的后面n个数移动到数组前面。
解题思路如下:
示例代码如下:
public class Test {
public static void main(String[] args) {
// 1. 初始化一个长度为 10 的整数数组;
int[] nums = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// 2. 从键盘接收输入保存到整数变量 n;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入1-10之间的整数:");
int n = scanner.nextInt();
if (n < 1 || n > 10) {
throw new IllegalArgumentException("整数有误");
}
System.out.println("旧数组值是:" + Arrays.toString(nums));
// 3. 将一维数组后面 n 个数移动到数组前面;
// 保存后面数组中后面 n 个元素
int[] right = new int[n];
// 将 nums 中后面 n 个元素复制到 right 数组中
System.arraycopy(nums, nums.length - n, right, 0, n);
// 将 nums 前面的元素复制到后面
System.arraycopy(nums, 0, nums, n, nums.length - n);
// 再将保存的后面的元素复制到前面
System.arraycopy(right, 0, nums, 0, n);
System.out.println("新数组值是:" + Arrays.toString(nums));
}
}
运行示例如下:
如果有帮助,麻烦动动小手给个采纳。
参考下这个
package shenzhoushuma;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = bf.readLine();
String substring = line.substring(1, line.lastIndexOf(",")-1);
String[] split = substring.split("\\,");
Integer[] arr = new Integer[split.length];
for (int i = 0; i < split.length; i++) {
arr[i]=Integer.parseInt(split[i]);
}
String[] shuzi = line.split("\\,");
int num = Integer.parseInt(shuzi[shuzi.length-1]);
merge(arr,num);
bf.close();
}
public static void merge(Integer[] arrs,int count){
if (count>arrs.length){
count = count % arrs.length;
}
for (int j = 1; j <= count; j++) {
int tmparr = arrs[arrs.length - 1];
for (int i = arrs.length - 1; i > 0; i--) {
arrs[i] = arrs[i - 1];
}
arrs[0] = tmparr;
}
System.out.println(Arrays.toString(arrs));
}
}