核心实现步骤
使用 Scanner
类 + 循环结构是最简洁的方案:
import java.util.Scanner; public class ContinuousInputExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input; System.out.println("输入内容(输入 'exit' 退出):"); // 循环读取输入直到退出指令 while (true) { System.out.print("> "); // 提示符 input = scanner.nextLine().trim(); // 读取整行并去除空格 if (input.equalsIgnoreCase("exit")) { break; // 退出循环 } // 执行操作(示例:回显内容) System.out.println("处理结果: " + input.toUpperCase()); } scanner.close(); // 关闭资源 System.out.println("程序已退出"); } }
关键代码解析
-
Scanner
初始化Scanner scanner = new Scanner(System.in);
创建从标准输入(键盘)读取数据的扫描器。 -
循环控制
while (true)
配合break
实现持续输入,通过条件(如exit
)终止。 -
输入处理
scanner.nextLine()
读取整行文本,.trim()
避免首尾空格干扰逻辑。 -
资源释放
scanner.close()
防止资源泄漏(重要!)。
处理复杂场景
混合输入不同类型
System.out.print("输入整数和字符串(如:10 Apple):"); int num = scanner.nextInt(); String text = scanner.next(); // 读取下一个单词 System.out.println(num + "个" + text);
- 注意:
nextInt()
/nextDouble()
后需用nextLine()
消耗换行符,避免后续输入跳过。
文件连续输入(批量处理)
Scanner fileScanner = new Scanner(new File("data.txt")); while (fileScanner.hasNextLine()) { String line = fileScanner.nextLine(); // 处理每一行数据 } fileScanner.close();
常见问题解决
-
输入类型不匹配
使用try-catch
处理异常:try { int num = scanner.nextInt(); } catch (InputMismatchException e) { System.out.println("请输入数字!"); scanner.next(); // 清除错误输入 }
-
循环无法退出
检查退出条件是否匹配(注意大小写和空格),建议用equalsIgnoreCase()
忽略大小写。 -
资源未关闭
始终在finally
块或 try-with-resources 中关闭Scanner
:try (Scanner sc = new Scanner(System.in)) { // 操作输入 } // 自动关闭
最佳实践建议
- 明确退出机制
提供清晰的退出指令(如exit
、quit
),避免用户困惑。 - 输入提示
每次循环输出提示符(如>
),提升用户体验。 - 异常健壮性
对非预期输入(如字符串代替数字)做容错处理。 - 大数据量优化
文件输入时用BufferedReader
替代Scanner
(性能更高)。
Java实现连续输入的核心是 Scanner
类 + 循环控制,重点注意:
- 使用
nextLine()
读取整行文本 - 及时关闭
Scanner
释放资源 - 通过退出条件(如
exit
)安全终止循环 - 异常处理保障程序健壮性
通过上述方法,可灵活应用于命令行工具、数据转换程序或交互式学习应用等场景。
引用说明:本文代码基于 Oracle 官方 Java SE 文档编写,遵循 Java 输入输出标准规范,参考资源:Scanner (Java SE 17 & JDK 17) – Oracle
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/42978.html