java - 如何在数学表中打印随机数?
问题描述
我正在使用两个整数(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;
演示
推荐阅读
- android - 如何知道应用程序何时从堆栈中打开?
- php - 显示缩略图的 Wordpress RSS 提要问题
- java - 找不到符号方法 requestPermissisons
- java - 如何在 selenium webdriver 的组列表中选择项目
- gforge - Gforge 登录错误
- java - 如何在 af:column adf 表中将日期格式化为 yyyy/mm/dd?
- node.js - 如何在 Strapi 中添加 webhook?
- c# - GemBox - 在 PDF 上剪切表格
- java - 错误:连接超时:连接?在构建项目gradle时
- c++ - 如何在 qt 项目中包含 winscard.lib