本文介绍如何使用java的scanner类实现动态收集用户输入的整数,无须预设容量,通过循环和条件判断持续添加元素至arraylist,直至用户确认结束,并最终打印全部内容。
本文介绍如何使用java的scanner类实现动态收集用户输入的整数,无须预设容量,通过循环和条件判断持续添加元素至arraylist,直至用户确认结束,并最终打印全部内容。
在实际开发中,经常需要构建一个动态可扩展的数据容器来存储用户实时输入的数值,而ArrayList正是理想选择——它内部自动扩容,无需预先指定大小。本教程将手把手带你实现一个交互式程序:持续提示用户输入整数,每次输入后询问是否结束;输入“yes”(不区分大小写)即终止录入,随后一次性输出所有已存元素。
核心实现要点
- 使用 while(true) 构建无限循环,配合 break 实现灵活退出;
- 利用 Scanner 分别读取整数(nextInt())和确认字符串(next()),注意避免因换行符导致的输入跳过问题(本例中因先读整数再读字符串,且next()不读取换行符,逻辑安全);
- 采用 equalsIgnoreCase("yes") 增强健壮性,支持 "YES"、"Yes"、"yEs" 等多种输入形式。
完整可运行代码
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.println("Enter an integer to add to the ArrayList:");
int input = scanner.nextInt();
numbers.add(input);
System.out.println("Is the input for ArrayList done? (Type 'yes' to finish, anything else to continue):");
String done = scanner.next();
if (done.equalsIgnoreCase("yes")) {
break;
}
}
System.out.println("The ArrayList data entered by the user:");
for (int number : numbers) {
System.out.println(number);
}
scanner.close(); // 重要:释放系统资源
}
}</integer>
注意事项与优化建议
- ✅ 资源管理:务必调用 scanner.close() 关闭扫描器,防止资源泄漏;
- ⚠️ 异常处理增强(进阶):当前代码未处理非数字输入(如输入字母会抛出 InputMismatchException)。生产环境中建议用 hasNextInt() 预检 + nextLine() 清空缓冲区,提升容错性;
- ? 用户体验优化:可增加输入计数提示(如“第1个数”)、支持“quit”/“exit”等多关键词退出,或改用 nextLine() 统一读取后解析,避免混合 nextInt() 与 next() 的潜在陷阱;
- ? 扩展方向:若需存储其他类型(如字符串、浮点数),只需修改泛型参数(ArrayList
)及对应读取方法(next()、nextDouble())即可复用该逻辑框架。
通过本方案,你不仅能掌握 ArrayList 的动态增删特性,更能理解交互式控制流的设计思想——让程序真正“听懂”用户意图,是构建实用工具的第一步。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











