Java如何格式化控制台输出随机数并计算所有随机数的平均值
问题解决方案
- 现有代码核心问题:你定义的
randoms是循环内部的局部变量,每次循环都会重新创建、旧值直接被覆盖,既没有累计总和,也没有留存生成的数值,所以无法完成后续的格式化输出和平均值计算。
1. 实现逻辑说明
- 新增
sum全局累计变量,每次循环把生成的随机数累加到该变量,用来后续计算平均值 - 输出时通过
i % 10 == 0的判断控制换行,即可实现每行输出10个数字的效果 - 注意你当前使用的
rand.nextInt(101)生成的是0-100范围的数值,如果需要1-100的范围,需要改成rand.nextInt(100) + 1
2. 完整可运行代码
import java.util.Random; public class RandomCalc { public static void main(String[] args) { Random rand = new Random(); int n = 100; int sum = 0; // 累计所有随机数总和 for (int i = 1; i <= n; i++) { // 生成1-100的随机数,如需0-100范围改回rand.nextInt(101)即可 int randomNum = rand.nextInt(100) + 1; sum += randomNum; // 格式化输出,每个数字占4位宽度左对齐,保证排版整齐 System.out.printf("%-4d", randomNum); // 每输出10个数字触发换行 if (i % 10 == 0) { System.out.println(); } } // 计算平均值,转double避免整数除法丢失精度 double average = sum * 1.0 / n; System.out.printf("生成的100个随机数平均值为:%.2f", average); } }
3. 关键语法说明
- 格式化输出控制:
printf的%-4d参数代表输出int类型数值,占4个字符宽度,-代表左对齐,避免数字位数不同导致排版错位 - 平均值精度控制:求和后先乘以1.0转成double类型再做除法,避免两个int相除只保留整数部分的问题,
%.2f可以控制平均值保留两位小数输出
内容的提问来源于stack exchange,提问作者steven
相关产品推荐
相关产品推荐

