如何通过Java Scanner筛选输入中的整数并处理含退出指令的输入?
Java实现输入筛选整数并成对处理的方案
核心逻辑拆解
- 用
Scanner按空格分割逐词读取输入,不用一次性读整行,处理单个输入单元更灵活 - 对每个读取到的内容:
- 如果是
q,直接终止程序 - 尝试将内容转为整数,成功则存入列表;失败(比如%、#这类无效字符)直接忽略
- 如果是
- 每当列表中的整数数量≥2时,取出前两个传入目标方法,然后从列表中移除这两个元素,循环处理直到列表不足两个或收到退出指令
完整代码示例
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class IntegerPairProcessor { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<Integer> integerList = new ArrayList<>(); System.out.println("请输入内容(输入q退出):"); while (scanner.hasNext()) { String input = scanner.next().trim(); // 识别退出指令 if ("q".equalsIgnoreCase(input)) { System.out.println("程序退出"); break; } // 尝试解析整数,过滤无效输入 try { int num = Integer.parseInt(input); integerList.add(num); System.out.println("成功提取整数:" + num); // 成对处理整数 while (integerList.size() >= 2) { int first = integerList.remove(0); int second = integerList.remove(0); processPair(first, second); } } catch (NumberFormatException e) { // 无效输入直接忽略,可按需添加日志提示 System.out.println("忽略无效输入:" + input); } } scanner.close(); } // 你的目标方法,需要两个整数参数 private static void processPair(int a, int b) { System.out.printf("处理整数对:%d 和 %d%n", a, b); // 这里写你实际的业务逻辑 } }
代码说明
- 输入读取:
scanner.hasNext()会持续等待输入,直到输入流结束或遇到q - 退出判断:用
equalsIgnoreCase兼容大小写输入(比如输入Q也能退出) - 整数解析:通过
Integer.parseInt尝试转换,捕获NumberFormatException来过滤非整数输入 - 成对处理:每成功添加一个整数就检查列表长度,只要≥2就取出前两个调用目标方法,确保有整数就及时处理,不会积压
测试示例输入2 4 % # -3 -5 q,程序会依次提取2、4并处理这对;忽略%、#后提取-3、-5并处理;最后识别q退出。
内容的提问来源于stack exchange,提问作者Steven Meesters
相关产品推荐
相关产品推荐

