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

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

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

  • 写回答

1条回答 默认 最新

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

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部