java - 如何在数学表中打印随机数?

标签 java random console-application

我正在使用两个整数(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

并且行值大于列值,请问有人可以帮助我吗?提前致谢。

最佳答案

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

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

对此:

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

Demo

关于java - 如何在数学表中打印随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52867178/

相关文章:

java - Struts2 触发表在完成时加载

java - Xalan调用用户Java函数

Java:返回从 'phrases' 中包含 'target.' 的任何元素中删除的 ArrayList

python - 在 Python 中随机选择所有组合的子集

c++ - 如何跟踪 C++14 控制台应用程序的启动次数?

c++ - BYTE 作为未声明的标识符,即使我包含了 windows.h

java - 由于异步 Firebase 调用,主线程做了太多工作?

java - 头部或尾部练习 : Random class

python - jinja 2 中列表的元素随机化

c# - 如何在我的 C# 控制台应用程序中使用命令行参数?