使用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
相关产品推荐
相关产品推荐

