Java数组平均值计算错误排查及解决建议
嘿,我看到你的问题了——计算员工数量数组的平均值总是出错,咱们来一步步找出问题所在!
问题分析与修复方案
1. 错误的遍历范围导致总和计算偏差
你当前计算总和的循环遍历了整个employeesno数组的固定长度(5),但实际上如果用户提前输入stop终止输入,只有totalentered个位置存储了有效的员工数,剩下的数组元素默认值是0。这些额外的0会被加到总和里,直接拉低了平均值,导致结果错误。
举个例子:如果你只输入了2个部门的员工数,数组剩下3个位置都是0,总和会额外加上这三个0,最后除以5得到的平均值肯定和实际输入的员工数平均值不符。
2. 整数除法导致小数部分被截断
你的sum1是int类型,employeesno.length也是int类型,所以sum1/employeesno.length执行的是整数除法——结果会直接舍弃小数部分。比如总和是7、有效数量是2时,7/2会得到3而不是3.5,这也会让平均值的精度受损。
修复后的平均值计算代码
把计算平均值的代码替换成下面这段:
int sum1=0; double average; // 只遍历有有效数据的条目,用totalentered替代数组固定长度 for(int l=0; l < totalentered ; l++) { sum1 += employeesno[l]; } // 将sum1强制转为double,触发浮点数除法保留小数 average= (double)sum1 / totalentered; System.out.println("aver= "+average);
额外小提示(输入逻辑的潜在细节)
另外提个小细节:你的输入逻辑全程用nextLine()读取内容,避免了Scanner常见的换行符残留问题,这点做得不错。如果用户输入stop,对应的employeesno[index]和address[index]会是默认值,但因为你用totalentered控制输出和计算范围,所以这部分不会影响最终结果。
这样修改后,就能正确计算实际输入的员工数的平均值啦!
内容的提问来源于stack exchange,提问作者kila
相关产品推荐
相关产品推荐

