Java中用Math.Random生成二维数组:为每列单独限制数值范围
给二维数组不同列设置不同随机数范围的解决方案
你的问题核心是没有根据列索引区分随机数的生成范围,原代码里不管是第一列(j=0)还是第二列(j=1),都用了相同的Math.random() *5 +1,所以所有列的最大值都是5。只需要在内层循环里根据j的取值,给不同列设置不同的随机范围即可。
修改后的完整代码:
package exercises; public class TimeTable { public static void main(String[] args) { int[][] nums = new int[10][2]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 2; j++) { // 根据列索引判断生成范围 if (j == 0) { // 第一列:1-5 nums[i][j] = (int) (Math.random() * 5 + 1); } else { // 第二列:1-10 nums[i][j] = (int) (Math.random() * 10 + 1); } } } for (int i = 0; i < 10; i++) { System.out.println(nums[i][0] + " x " + nums[i][1] + " = "); } } }
关键修改说明
- 利用内层循环的
j(列索引)做判断:- 当
j=0(第一列)时,保持原逻辑*5+1,生成1到5的随机整数 - 当
j=1(第二列)时,改成*10+1,生成1到10的随机整数
- 当
修改后的输出示例(随机生成,每次结果不同):
3 x 7 = 1 x 10 = 5 x 4 = 2 x 8 = 5 x 3 = 1 x 6 = 5 x 1 = 2 x 9 = 3 x 5 = 5 x 2 =
这样就能满足第一列最大5,第二列最大10的需求,适合孩子针对性练习乘法。
内容的提问来源于stack exchange,提问作者Erhan
相关产品推荐
相关产品推荐

