You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:36:18