用Java写以下程序:输入3行数据,第一-行代表数组的个数n,第二行输入n个数填充数组,第3行代表往后移动的位数 输出格式: 输出一行数据,代表调换座位后的数组元素内容
时间: 2024-10-14 08:13:00 浏览: 3
下面是一个简单的Java程序,用于读取用户输入的数组长度、数组元素以及移动的位置,并将数组元素向后移动指定位置:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入数组的个数
System.out.print("请输入数组的个数n: ");
int n = scanner.nextInt();
// 初始化数组
int[] array = new int[n];
System.out.println("请输入" + n + "个数组元素: ");
for (int i = 0; i < n; i++) {
array[i] = scanner.nextInt();
}
// 输入需要移动的位数
System.out.print("请输入需要往后移动的位数: ");
int shift = scanner.nextInt();
// 向后移动数组元素
rotateArray(array, shift);
// 输出旋转后的数组
System.out.println("调换座位后的数组元素: ");
for (int num : array) {
System.out.print(num + " ");
}
}
/**
* 通过循环数组元素实现数组向后移动
* @param array 待旋转的数组
* @param shift 移动的位数
*/
private static void rotateArray(int[] array, int shift) {
if (shift > 0 && shift <= array.length) {
// 将数组顺时针旋转shift位
for (int i = 0; i < shift; i++) {
array = circularShift(array, array.length - 1 - i);
}
} else {
System.out.println("无效的移动位数!");
}
}
/**
* 循环数组的右移操作,避免数组越界
* @param array 需要移动的数组
* @param positions 要移到的位置
* @return 新的数组
*/
private static int[] circularShift(int[] array, int positions) {
int[] shiftedArray = new int[array.length];
for (int i = 0; i < array.length; i++) {
shiftedArray[(i + positions) % array.length] = array[i];
}
return shiftedArray;
}
}
```
运行此程序后,根据提示输入数组的相关信息,即可得到按指定位数后移动的数组元素结果。