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