在Java开发中,接收用户输入并将数据存储为数组后,在循环外部打印数组形式的完整数据是一个常见的需求,很多初学者会因为作用域或者存储方式的问题无法实现该效果。下面我们就来详细讲解具体的实现方法。

实现思路分析
要实现在循环外打印数组形式的用户输入数据,核心需要解决两个问题:一是正确接收并存储用户输入的数据到数组中,二是确保数组在循环结束后仍然可以被访问到。具体步骤如下:
- 导入
java.util.Scanner类,用于接收用户输入 - 在循环外部声明并初始化数组,明确数组的长度或者先收集输入数据再转为数组
- 在循环内部将每次接收的用户输入存入数组的对应位置
- 循环结束后,使用数组遍历或者直接输出数组的方式打印内容
具体实现代码示例
方式一:先确定数组长度再存储
这种方式适合提前知道需要接收多少条用户输入的场景,我们首先在循环外声明数组,循环内赋值,循环外打印。
import java.util.Scanner;
public class PrintArrayOutsideLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 在循环外声明数组,长度为5
int[] userInputArray = new int[5];
System.out.println("请输入5个整数:");
// 循环内给数组赋值
for (int i = 0; i < userInputArray.length; i++) {
userInputArray[i] = scanner.nextInt();
}
// 循环外打印数组形式的数据
System.out.print("用户输入的数组形式为:[");
for (int i = 0; i < userInputArray.length; i++) {
System.out.print(userInputArray[i]);
if (i != userInputArray.length - 1) {
System.out.print(", ");
}
}
System.out.println("]");
scanner.close();
}
}
方式二:使用集合动态收集再转为数组
如果不确定用户输入的数量,可以先用ArrayList在循环内收集数据,循环结束后再转为数组,同样满足循环外打印的需求。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PrintArrayOutsideLoop2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 循环外声明集合用于存储输入数据
List<String> inputList = new ArrayList<>();
System.out.println("请输入多个字符串,输入exit结束:");
// 循环内收集输入数据
while (true) {
String input = scanner.next();
if ("exit".equals(input)) {
break;
}
inputList.add(input);
}
// 循环外将集合转为数组
String[] userInputArray = inputList.toArray(new String[0]);
// 循环外打印数组形式的数据
System.out.print("用户输入的数组形式为:[");
for (int i = 0; i < userInputArray.length; i++) {
System.out.print(userInputArray[i]);
if (i != userInputArray.length - 1) {
System.out.print(", ");
}
}
System.out.println("]");
scanner.close();
}
}
常见错误及原因分析
很多开发者实现该功能时会出现问题,常见的错误写法如下:
import java.util.Scanner;
public class WrongExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入3个整数:");
for (int i = 0; i < 3; i++) {
// 错误:数组在循环内声明,循环结束后无法访问
int[] userInputArray = new int[3];
userInputArray[i] = scanner.nextInt();
}
// 此处会报错,因为userInputArray的作用域仅在循环内部
System.out.println(userInputArray[0]);
scanner.close();
}
}
上述错误的原因是数组userInputArray被声明在循环内部,属于局部变量,循环结束后该变量的生命周期就结束了,无法在循环外部访问。因此必须将数组的声明放在循环外部,才能保证循环结束后仍然可以操作该数组。
总结
要在Java中实现循环外打印数组形式的用户输入数据,核心是保证数组的作用域覆盖循环内外,根据是否提前知道输入数量选择直接初始化数组或者使用集合转数组的方式即可。注意避免将数组声明在循环内部,否则会导致循环外无法访问的问题。