
本文讲解了在java中通过scanner获取用户输入的五个整数后,准确计算并输出最大值与最小值的关键逻辑——初始化边界值必须与比较方向一致,且比较操作须置于循环内部。
本文讲解了在java中通过scanner获取用户输入的五个整数后,准确计算并输出最大值与最小值的关键逻辑——初始化边界值必须与比较方向一致,且比较操作须置于循环内部。
在编写求最大值(max)和最小值(min)的程序时,一个常见但容易被忽视的错误是初始值设置不当,导致最终结果恒为 Integer.MAX_VALUE 或 Integer.MIN_VALUE。你提供的代码中:
int highest = Integer.MAX_VALUE, lowest = Integer.MIN_VALUE;
这恰恰颠倒了逻辑:
- 若 highest 初始为 Integer.MAX_VALUE,那么任何用户输入的整数都不可能大于它,因此 highest 永远不会被更新;
- 同理,lowest 初始为 Integer.MIN_VALUE,所有输入都大于它,lowest 也永远不会更新。
✅ 正确做法是:
- highest 应初始化为可能的最小值(即 Integer.MIN_VALUE),确保第一个输入必然大于它,从而触发首次赋值;
- lowest 应初始化为可能的最大值(即 Integer.MAX_VALUE),确保第一个输入必然小于它,从而触发首次赋值。
同时,比较逻辑必须放在循环体内,否则只会对最后一个输入的 number 进行一次判断,而非遍历全部5个数。
以下是修正后的完整可运行代码:
import java.util.Scanner;
public class MaxMinFinder {
public static void main(String[] args) {
int highest = Integer.MIN_VALUE; // 初始设为最小可能值
int lowest = Integer.MAX_VALUE; // 初始设为最大可能值
Scanner input = new Scanner(System.in);
System.out.println("Please enter five integers:");
for (int j = 0; j < 5; j++) {
int number = input.nextInt();
if (number > highest) {
highest = number;
}
if (number < lowest) {
lowest = number;
}
}
System.out.println("Your highest number is: " + highest);
System.out.println("Your lowest number is: " + lowest);
input.close();
}
}? 关键注意事项:
- ✅ 初始化:highest = Integer.MIN_VALUE,lowest = Integer.MAX_VALUE;
- ✅ 比较语句必须在 for 循环内,随每次输入实时更新;
- ✅ 建议调用 input.close() 避免资源泄漏;
- ⚠️ 不要重复提示“Enter five integers”五次(当前提示写在循环内会导致重复输出),建议将提示移至循环外,提升用户体验。
该逻辑不仅适用于5个数,也可轻松扩展至任意数量——只需调整循环次数,并保持初始化与比较逻辑不变。掌握这一模式,是编写健壮数值分析程序的基础。

















