程序猿99号 2018-12-20 12:40 采纳率: 50%
浏览 379
已采纳

求此java基础编程题的解法要注释

有一个长度为 n(n=100)的数列,该数列定义为从 2 开始的递增有序偶数
({2,4,6,...,200}),现在要求你按照顺序每 m 个数求出一个平均值,如果最后不足 m 个,
则以实际数量求平均值。编程输出该平均值序列。
要求: m 为大于等于 3 的整数

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-12-20 05:00
    关注
    class Untitled {
        public static void main(String[] args) {
            int m = 3; //每次输出几个
            int n = 100; //一共多少个
            String buf = ""; //用来存放每次输出的m个数字
            int sum = 0; //计算这些数字的和
            int cnt = 0; //对有几个数字计数
            int i = 1; //从1开始(i * 2正好是2 4 6 ...)
            for (; i <= n; i++)
            {
                if (i % m == 0) //如果i除以m的余数为0,也就是i= m, 2m 3m, ...,凑够了m个,就要输出了
                {
                    System.out.println(buf + String.valueOf(i * 2) + "的平均数是" + (sum + i * 2) / (float)(cnt + 1)); //平均数是sum,之前的总和,加上当前这个(i * 2),然后除以数量(数量也要+1,因为还有当前的)
                    buf = ""; //把输出字符串清空,因为下次循环重新开始了
                    sum = 0; //总和也清空
                    cnt = 0; //计数也清空
                }
                else
                {
                    buf += String.valueOf(i * 2); //将当前数字放入输出的字符串
                    if (i != n) buf += ","; //如果不是最后一个,需要加上逗号
                    sum += (i * 2); //总和加上当前的值
                    cnt++; //计数器+1
                }
            }
            System.out.println(buf + "的平均数是" + (sum) / (float)(cnt)); //这里输出的是最后没有凑够m的剩余的
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 游戏盾如何溯源服务器真实ip?
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥15 抖音看过的视频,缓存在哪个文件