Java温度统计程序输出初始最小值而非更新后最大值问题排查
Java温度统计代码问题排查及修复
错误原因
- 核心逻辑赋值颠倒:当判断当前输入温度
temp大于已记录的最高温maxtemp时,代码写为temp = maxtemp,是把初始值-1000的最高温赋值给了输入的临时温度变量,maxtemp本身从未被更新,因此始终保留初始值。 - 次要优化点:
Scanner对象在循环内重复创建,属于不必要的资源开销,且原输出语句中at后缺少空格,会导致最终输出的时间和文字连在一起。
修复后完整代码
package javaPracticeNotes; import java.util.Scanner; public class Lab3_7 { public static void main(String[] args) { int temp; int maxtemp = -1000; int timeAtMax = 0; int hour; // Scanner移到循环外,只创建一次 Scanner scan = new Scanner(System.in); for (hour = 1; hour <= 5; hour++) { System.out.println("Enter the temperature at " + hour); temp = scan.nextInt(); if (maxtemp < temp) { // 修正赋值顺序,把当前更高的温度赋值给maxtemp maxtemp = temp; timeAtMax = hour; } } scan.close(); // 补充at后的空格,优化输出格式 System.out.println("The max temperature of the day was " + maxtemp + " at " + timeAtMax); } }
内容的提问来源于stack exchange,提问作者bjrod
相关产品推荐
相关产品推荐

