本文介绍如何使用 scanner 动态读取用户输入的整数,无须预先指定大小,通过循环持续添加至 arraylist,并支持以“yes”为终止条件,最终完整输出所有元素。
本文介绍如何使用 scanner 动态读取用户输入的整数,无须预先指定大小,通过循环持续添加至 arraylist,并支持以“yes”为终止条件,最终完整输出所有元素。
在 Java 中,ArrayList 是一种动态可扩容的集合容器,非常适合处理运行时不确定数量的用户输入。与固定长度的数组不同,它能自动增长,无需预设容量——这正是本场景的核心需求:让用户自由输入任意多个整数,直到主动选择结束。
以下是一个完整、健壮的实现方案:
import java.util.ArrayList;
import java.util.Scanner;
public class UserInputArrayList {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("Enter an integer to add to the ArrayList: ");
// 使用 nextInt() 读取整数,注意异常处理建议(见下方说明)
int input = scanner.nextInt();
numbers.add(input);
System.out.print("Is the input for ArrayList done? (Type 'yes' to finish, anything else to continue): ");
String done = scanner.next().trim(); // 去除首尾空格,提升鲁棒性
if (done.equalsIgnoreCase("yes")) {
break;
}
}
System.out.println("\nThe ArrayList data entered by the user:");
for (int i = 0; i < numbers.size(); i++) {
System.out.println("[" + i + "] " + numbers.get(i));
}
scanner.close();
}
}✅ 关键设计说明:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 使用 while(true) 构建无限循环,配合 break 实现灵活退出;
- scanner.next().trim() 避免因空格或换行导致匹配失败;
- equalsIgnoreCase("yes") 确保大小写不敏感,提升用户体验;
- 输出时带索引编号([0], [1]…),便于验证插入顺序与内容完整性。
⚠️ 注意事项(生产环境建议增强):
立即学习“Java免费学习笔记(深入)”;
- 当前代码未处理 InputMismatchException(如用户误输非数字)。实际项目中应包裹 try-catch 并提示重新输入;
- 若需支持空行跳过或更复杂的结束指令(如 "quit"/"exit"),可扩展条件判断逻辑;
- scanner.close() 不可省略,防止资源泄漏(尤其在长期运行程序中)。
该方案简洁、可读性强,完全满足“不限初始容量、交互式录入、条件终止、清晰输出”的核心要求,是 Java 集合与用户交互入门的经典实践范例。

















