如何无需询问输入数量,实现输入到42即停止的Java键盘输入
解决无需预先指定输入数量、读到42即停止的Java实现
嘿,我来帮你搞定这个问题!你现在的代码需要先询问用户输入数量,但其实我们可以通过循环持续读取输入的方式,完全不用提前确定输入个数,只要读到42就立刻停止处理。
完整代码示例
import java.util.Scanner; import java.util.ArrayList; public class antarahac { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<Integer> inputNumbers = new ArrayList<>(); // 用动态集合存输入,不用固定数组长度 System.out.println("请输入整数,输入42时停止:"); while (sc.hasNextInt()) { // 自动检查是否还有整数输入 int num = sc.nextInt(); if (num == 42) { break; // 读到42就跳出循环,停止处理 } inputNumbers.add(num); // 把非42的数字存起来(如果需要后续处理的话) System.out.println("已读取并处理数字:" + num); // 示例处理逻辑:打印读取的数字 } // 可添加对存储数字的后续操作 System.out.println("停止输入,已读取的有效数字列表:" + inputNumbers); sc.close(); } }
关键逻辑说明
- 摆脱固定输入数量限制:用
while(sc.hasNextInt())作为循环条件,它会自动检测控制台是否还有整数输入,用户可以一直输入直到敲入42,也可以通过快捷键手动结束输入(Windows按Ctrl+Z,Mac/Linux按Ctrl+D)。 - 动态存储输入:用
ArrayList<Integer>替代固定长度数组,它可以自动扩容,完全不用提前预估输入个数。如果你的需求只是读取后立刻处理(比如打印),甚至可以省略集合,直接在循环内完成操作。 - 终止逻辑清晰:每次读取整数后判断是否等于42,满足条件就用
break跳出循环,直接停止后续输入处理。
简化版(无需存储输入的场景)
如果你的需求只是读取输入直到42,不需要保存之前的数字,可以简化成这样:
import java.util.Scanner; public class antarahac { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入整数,输入42时停止:"); while (true) { int num = sc.nextInt(); if (num == 42) { System.out.println("已读取到42,停止处理"); break; } // 这里写你的自定义处理逻辑,比如计算、打印等 System.out.println("正在处理数字:" + num); } sc.close(); } }
内容的提问来源于stack exchange,提问作者antara bhattacharya
相关产品推荐
相关产品推荐

