如何在Java方法中获取Scanner输入的多个数值的最小值?
解决Scanner获取任意数量输入最小值的问题
原代码存在的问题
- 无意义的比较:
input < input永远为false,这个判断完全没用 - 条件判断错误:
if(lessThan = true)是赋值操作,不是判断相等;而且不管if/else分支都给lesser赋值当前输入,等于每次都覆盖之前的值,根本没做最小值比较 - 初始值不合理:
lesser = 0如果用户输入的全是负数,最终结果会错误
修正后的代码
import java.util.Scanner; public class MinCalculator { private static Scanner console = new Scanner(System.in); public static void minimum(int count) { if (count <= 0) { System.out.println("输入数量不能小于等于0"); return; } double lesser; // 先获取第一个输入作为初始最小值 System.out.print("Enter a double: "); lesser = console.nextDouble(); // 处理剩余的输入 for (int i = 1; i < count; i++) { System.out.print("Enter a double: "); double input = console.nextDouble(); // 比较当前输入和当前最小值,更小则更新 if (input < lesser) { lesser = input; } } System.out.println("The minimum is " + lesser); } public static void main(String[] args) { // 示例:获取3个输入的最小值 minimum(3); } }
修正说明
- 先获取第一个输入值作为初始最小值,避免了固定初始值导致的错误
- 后续每个输入都和当前最小值比较,只有当输入值更小时才更新最小值
- 增加了输入数量合法性判断,处理count≤0的情况
- 去掉了无用的变量和逻辑,代码更简洁清晰
内容的提问来源于stack exchange,提问作者Caleb Sims
相关产品推荐
相关产品推荐

