You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java嵌套for循环异常:计算平均降雨量时循环次数错误

问题修复方案

你的问题出在嵌套循环的条件上:外层循环遍历年份(循环years次),但内层循环错误地用了years * 12作为终止条件,导致总循环次数变成years * years * 12——比如输入2年时,就是2*24=48次,自然会统计48个月的数据。

修复步骤:

  1. 把内层循环的条件改成j <= 12,因为每一年固定是12个月,和总年份无关。
  2. 初始化totalRain变量(你当前代码里没声明和初始化,会编译报错),建议用double类型来保留小数精度。
  3. 调整输出格式,让结果更易读。

修复后的完整代码:

import java.util.Scanner;

public class AverageRainfall {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        double totalRain = 0; // 初始化总降雨量,用double保留精度
        
        System.out.println("How many years did it rain? ");
        int years = kb.nextInt();

        // 外层循环遍历每一年
        for (int i = 1; i <= years; i++){
            // 内层循环遍历当前年份的12个月
            for(int j = 1; j <= 12; j++){
                System.out.println("请输入第" + i + "年第" + j + "月的降雨量(英寸):");
                totalRain += kb.nextDouble();
            }
        }
        
        double averageRain = totalRain / (12 * years);
        System.out.printf("在%d年的时间里,平均降雨量为:%.2f英寸%n", years, averageRain);
        
        kb.close(); // 关闭Scanner
    }
}

说明:

  • 内层循环固定跑12次,外层循环跑years次,总次数就是12*years,符合实际月份数。
  • 用double类型存储降雨量和平均值,避免整数除法导致的精度丢失(比如总降雨量是25,24个月的话,整数除法会得到1,而实际是1.04)。
  • 优化了输入提示,让用户清楚知道当前输入的是哪一年哪一月的数据。

内容的提问来源于stack exchange,提问作者ioannis_03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:00:22