首页 > 解决方案 > 如何在数学表中打印随机数?

问题描述

我正在使用两个整数(a 和 tableSize)实现一个数学表。我已经构建了一个名为 R 的随机操作。我将计算行和列范围之间的随机数并打印随机数。对于那些行值大于列值的实例,输出为破折号(“-”)。

这是我的代码,

    int a = 4;
    int tableSize = 10;
    System.out.print("    R ");
    for(int i = a; i <= tableSize;i++ )
    {
        System.out.format("%4d",i);
    }   
    System.out.println();
    for(int i = a ;i <= tableSize;i++)
    {
        System.out.format("%4d ",i);
        for(int j=a;j <= tableSize;j++)
        {
            int randomNum = rand.nextInt (j) + i;
            if(!(i > j))
            {
                System.out.format("%4d", randomNum);
            } else
            {
                System.out.format("%4s", "-");
            }
         }
         System.out.println();
     }

我需要的输出是这样的,

R  4  5  6  7  8  9  10
4  4  4  5  5  4  9   8
5  -  5  5  6  5  9   8
6  -  -  6  6  7  9   6
7  -  -  -  7  7  7   7
8  -  -  -  -  8  9   9
9  -  -  -  -  -  9  10
10 -  -  -  -  -  -  10

但问题是我没有得到那样的输出。我收到的输出是,

   R    4   5   6   7   8   9  10
   4    5   7   6   8   8  10  13
   5    -   5   9   8   8  10  12
   6    -   -   9   8  11  10  11
   7    -   -   -   8  14   9  16
   8    -   -   -   -  14  12  11
   9    -   -   -   -   -  13  18
  10    -   -   -   -   -   -  19

并且行值大于列值,请任何人都可以帮助我?提前致谢。

标签: javarandomconsole-application

解决方案


问题是您将单元格值计算为 1 和列号加上行号之间的随机数之和。我认为您想要的逻辑是矩阵中的给定单元格不能大于行号或列号的最大值。如果是这样,那么您需要更改此行:

int randomNum = rand.nextInt(j) + i;

对此:

int randomNum = rand.nextInt((Math.max(i, j) - a) + 1) + a;

演示


推荐阅读