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

Java开发问题:满足两个条件时如何重新提示用户输入double值?

功能实现说明

现有代码问题排查

  • 开头单独读取的首次输入没有做重试逻辑,碰到99999仅打印错误就直接进入后续循环,没有强制用户重新输入有效值
  • 循环内碰到99999直接退出,没有判断当前列表是否为空,不符合“空列表时输入99999不能结束”的需求
  • count计数逻辑顺序有误,会导致第10个有效元素无法正常存入列表

修正后完整代码

import java.util.*;
public class DistanceTesting {
    public static void main(String[] args) {
        List<Double> doubleList = new ArrayList<>();
        final int MAX_SIZE = 10;
        final int EXIT_FLAG = 99999;
        double sum = 0;
        double average = 0;
        double number;
        Scanner input = new Scanner(System.in);

        System.out.println("请输入最多10个double类型数值,输入99999可提前结束输入:");
        while (true) {
            // 先判断是否已经存满10个,满了直接退出
            if (doubleList.size() == MAX_SIZE) {
                System.out.println("已达到最大输入数量10,自动结束输入");
                break;
            }

            System.out.print("请输入数值:");
            number = input.nextDouble();

            // 处理退出标识
            if (number == EXIT_FLAG) {
                if (doubleList.isEmpty()) {
                    // 列表为空时输入退出标识,提示错误不退出
                    System.out.println("错误:您必须输入至少一个有效数值,请重新输入");
                    continue;
                }
                // 列表不为空时正常退出
                System.out.println("检测到退出指令,结束输入");
                break;
            }

            // 存入有效数值
            doubleList.add(number);
            sum += number;
        }

        // 后续业务逻辑示例,可按需修改
        average = sum / doubleList.size();
        System.out.println("输入的有效数值列表:" + doubleList);
        System.out.println("总和:" + sum);
        System.out.println("平均值:" + average);
        input.close();
    }
}

核心调整逻辑说明

  • 统一将输入逻辑放在循环内处理,不需要单独读取首次输入,减少逻辑冗余
  • 碰到退出标识99999时优先判断列表是否为空,空列表则打印错误后直接进入下一轮循环要求用户重新输入,不会结束程序
  • 直接用列表的size()方法判断输入数量,不需要额外维护count变量,逻辑更清晰不易出错
  • 加入了最大值、退出标识的常量定义,后续修改参数更方便

内容的提问来源于stack exchange,提问作者Avery Lytle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:06:05