Java程序开发求助:读取不定数量数字直至输入偶数时停止
问题分析与修正方案
你的代码存在以下关键问题:
- Scanner对象重复创建:每次循环都新建Scanner实例,会引发输入流异常,应在循环外初始化一次
- 输入读取语法错误:
inputtedInteger = Scanner(in.nextLine);写法错误,正确读取整数的方式是in.nextInt() - 判断逻辑错误:用
inputtedInteger != 0判断非偶数完全错误,应通过inputtedInteger % 2 != 0识别奇数 - 循环终止逻辑错误:
programInteger =+1;是将变量赋值为1而非累加,可直接用break终止循环更简洁 - 未实现数字集合存储:原代码未创建集合来保存输入的数字,遗漏了需求核心部分
修正后的完整代码
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class NumberCollector { public static void main(String[] args) { // 创建集合存储输入的奇数 List<Integer> numberList = new ArrayList<>(); Scanner in = new Scanner(System.in); while (true) { System.out.println("Enter a number: "); // 处理非整数输入,避免程序崩溃 while (!in.hasNextInt()) { System.out.println("请输入有效的整数!"); in.next(); // 丢弃无效输入 } int inputtedInteger = in.nextInt(); // 判断是否为偶数 if (inputtedInteger % 2 == 0) { System.out.println("The number " + inputtedInteger + " that you entered is an even number!"); break; // 遇到偶数,终止循环 } else { // 奇数存入集合,提示继续输入 numberList.add(inputtedInteger); System.out.println("The number " + inputtedInteger + " that you inputted is not an even number, try again: "); } } // 输出存储的所有奇数 System.out.println("已存储的奇数列表:" + numberList); in.close(); // 关闭Scanner资源 } }
代码说明
- 用
ArrayList<Integer>存储输入的奇数,满足"存入数字集合"的核心需求 - Scanner实例仅初始化一次,避免重复创建引发的输入问题
- 增加非整数输入校验,防止程序因非法输入崩溃
- 用
while(true)配合break实现清晰的循环终止逻辑 - 输入奇数时自动存入集合,遇到偶数时立即终止循环并输出结果
内容的提问来源于stack exchange,提问作者Ali Kasim
相关产品推荐
相关产品推荐

