为何获取的是Integer最大最小值而非用户输入值?
问题分析与解决
问题根源
你的代码有两个关键错误导致输出异常:
- 初始化逻辑完全搞反:你把
highest初始成Integer.MAX_VALUE(Java中int类型的最大值),lowest初始成Integer.MIN_VALUE(int类型的最小值)。这样任何输入的数字都不可能比highest大,也不可能比lowest小,自然不会更新这两个变量。 - 比较逻辑位置错误:更新最大、最小值的
if判断写在循环外面,只会处理最后一次输入的数字,前面4次输入的数值完全没参与比较。
修正后的代码
// 正确初始化:最高值设为int最小值,最低值设为int最大值 int highest = Integer.MIN_VALUE, lowest = Integer.MAX_VALUE, number = 0; Scanner input = new Scanner(System.in); for (int j = 0; j < 5; j++) { System.out.print("Enter integer " + (j+1) + ": "); 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);
关键改动说明
- 修正初始化:
highest初始为Integer.MIN_VALUE,确保任何输入的整数都能比它大;lowest初始为Integer.MAX_VALUE,确保任何输入的整数都能比它小。 - 把比较更新的逻辑移到循环内部,每输入一个数字就立刻判断是否需要更新最大或最小值,确保所有输入都参与计算。
- 优化提示文本,让用户知道当前输入的是第几个数字,体验更友好。
内容的提问来源于stack exchange,提问作者NayxAshanti
相关产品推荐
相关产品推荐

