键盘输入一个长度为8的整型数组,输出原数组和逆序数组(两种方法)java
时间: 2024-09-30 15:03:23 浏览: 40
第7章 数组(C语言)
在Java中,为了键盘输入一个长度为8的整型数组,并输出原始数组和逆序后的数组,你可以采用以下两种方法:
**方法一:使用ArrayList和for循环**
1. 首先,创建一个`ArrayList`来存储用户输入的整数。
2. 接收用户的输入并添加到`ArrayList`中,直到达到8个元素。
3. 将`ArrayList`转换为数组并输出原始数组。
4. 使用Collections.reverse()函数反转列表,然后再次将其转换为数组并输出逆序数组。
```java
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> inputList = new ArrayList<>();
// 输入8个整数
for (int i = 0; i < 8; i++) {
System.out.print("请输入第" + (i+1) + "个数字:");
int num = Integer.parseInt(Console.readLine());
inputList.add(num);
}
// 输出原始数组
int[] originalArray = inputList.stream().mapToInt(Integer::intValue).toArray();
System.out.println("原始数组: " + Arrays.toString(originalArray));
// 反转数组
Collections.reverse(inputList);
// 再次输出逆序数组
int[] reversedArray = inputList.stream().mapToInt(Integer::intValue).toArray();
System.out.println("逆序数组: " + Arrays.toString(reversedArray));
}
}
```
**方法二:使用递归或栈(更底层的方式)**
1. 创建一个空数组用于存放结果。
2. 循环遍历原始数组,将每个元素放入新数组的开始位置,然后递归地将剩余元素放进去。
3. 或者,使用栈的数据结构,依次将元素压入栈,然后再弹出形成逆序数组。
```java
import java.util.Stack;
public class Main {
public static void main(String[] args) {
int[] inputArray = new int[8]; // 假设已经初始化
int[] originalArray = inputArray.clone(); // 保存原始数组
// 输出原始数组
System.out.println("原始数组: " + Arrays.toString(originalArray));
// 递归法逆序数组
Stack<Integer> stack = new Stack<>();
for (int i = inputArray.length - 1; i >= 0; i--) {
stack.push(inputArray[i]);
}
int[] reversedArrayRecursion = new int[inputArray.length];
for (int i = 0; i < inputArray.length; i++) {
reversedArrayRecursion[i] = stack.pop();
}
System.out.println("逆序数组 (递归): " + Arrays.toString(reversedArrayRecursion));
// 或者,使用Stack实现
int[] reversedArrayStack = new int[inputArray.length];
stack = new Stack<>();
for (int i : inputArray) {
stack.push(i);
}
for (int i = 0; i < inputArray.length; i++) {
reversedArrayStack[i] = stack.pop();
}
System.out.println("逆序数组 (Stack): " + Arrays.toString(reversedArrayStack));
}
}
```
阅读全文