程序猿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 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作