求此java基础编程题的解法要注释
问题描述:
有一个长度为 n(n=100)的数列,该数列定义为从 2 开始的递增有序偶数
({2,4,6,...,200}),现在要求你按照顺序每 m 个数求出一个平均值,如果最后不足 m 个,
则以实际数量求平均值。编程输出该平均值序列。
要求: m 为大于等于 3 的整数
答
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的剩余的
}
}