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

使用for循环求最值:Java代码无法正确输出最大最小值

问题分析与修复方案

嘿,我看到你遇到的问题了,咱们一步步来理清楚:

你的代码里有几个关键问题导致功能失效:

  • 循环计数器被意外覆盖:你用a既当循环的计数器(a < 10),又用来接收用户输入(a=scan.nextDouble())。这会彻底打乱循环的执行次数——比如如果用户输入一个大于等于10的数,循环会直接终止,根本收不到10个输入。
  • 最大值/最小值初始化逻辑错误:你用if(a == 0)来初始化max和min,但如果用户第一个输入的不是0,那max和min会一直保持初始的0值,后续的比较就全错了(比如输入第一个数是5,程序会错误地认为最小值是0)。
  • 缺少结果输出语句:你的代码最后只写了Sys...,应该是没写完打印max和min的语句,这也是你看不到结果的原因之一。

修复后的代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        double max;
        double min;
        double num;

        System.out.print("Enter ten floating points: \n");
        
        // 先接收第一个输入,用来初始化max和min
        num = scan.nextDouble();
        max = num;
        min = num;

        // 剩下的9次输入用循环处理
        for (int i = 1; i < 10; i++) {
            num = scan.nextDouble();
            if (num < min) {
                min = num;
            }
            if (num > max) {
                max = num;
            }
        }

        // 打印结果
        System.out.println("最大值是: " + max);
        System.out.println("最小值是: " + min);
        scan.close();
    }
}

关键修改说明:

  • 把循环计数器和输入变量分开:用int i作为循环的计数器,double num专门接收用户输入,避免互相干扰。
  • 正确初始化max和min:先接收第一个输入,直接把它赋值给max和min,这样后续的比较就有了正确的基准。
  • 补充了结果打印语句,确保能输出最终的最大值和最小值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:38:28