Java 二维对称随机数数组 公共静态int[][]矩阵(int n,int max,int min){ int[][]网格=新int[3][3]; Random rand=新的Random(); rand.setSeed(System.currentTimeMillis()); 对于(int i=0;i
以下代码打印二维对称数组,其中值是范围(最小值和最大值)之间的随机数,该范围打印以下结果作为示例:Java 二维对称随机数数组 公共静态int[][]矩阵(int n,int max,int min){ int[][]网格=新int[3][3]; Random rand=新的Random(); rand.setSeed(System.currentTimeMillis()); 对于(int i=0;i,java,arrays,matrix,multidimensional-array,Java,Arrays,Matrix,Multidimensional Array,以下代码打印二维对称数组,其中值是范围(最小值和最大值)之间的随机数,该范围打印以下结果作为示例: 0 14 11 14 0 17 11 17 0 我的代码问题是它只打印0作为对角线值。如何将其更改为打印对角线值,将其设置为int min而不是0?例如,在上面的代码中,int min是8,因此它将给出以下结果: 8 14 11 14 8 17 11 17 8 您正在为所有i和j生成随机值,除非i==j,这是对角线值。此外,对角线的所有值都将相同。因此,在返回网格之前,您可以生成最
0 14 11
14 0 17
11 17 0
我的代码问题是它只打印0
作为对角线值。如何将其更改为打印对角线值,将其设置为int min而不是0
?例如,在上面的代码中,int min是8
,因此它将给出以下结果:
8 14 11
14 8 17
11 17 8
您正在为所有
i
和j
生成随机值,除非i==j
,这是对角线值。此外,对角线的所有值都将相同。因此,在返回网格之前,您可以生成最后一个随机值,并将其放在对角线上。像这样的
int diagonalValue = Math.abs((min+ rand.nextInt((max- min) + 1)));
for( int k=0 ; k<n ; k++)
{
grid[k][k] = diagonalValue;
}
int diagonalValue=Math.abs((min+rand.nextInt((max-min)+1));
对于(int k=0;k如果要将对角线设置为较低的变量,需要做两件事
第一,因为设置j
- 在方法开头添加无效语法检查
Math.abs
是冗余的
- 内循环应包括上限
您的代码可能如下所示:
for(int i = 0; i < n; i++)
{
for( int j = 0; j <= i; j++)
{
if(i == j)
{
grid[i][j] = lower;
}
else
{
int value = Math.abs((lower + rand.nextInt((upper - lower) + 1)));
grid[i][j] = value;
grid[j][i] = value;
}
}
}
公共静态int[][]矩阵(int n,int max,int min){
//矩阵大小不正确
如果(n){
如果(i==j){
//主对角线
网格[i][j]=min;
}否则{
//外围元件
int value=min+rand.nextInt((max-min)+1);
网格[i][j]=值;
网格[j][i]=数值;
}
}));
返回网格;
}
publicstaticvoidmain(字符串[]args){
数组.流(矩阵(5,9,1))
.map(数组::toString)
.forEach(System.out::println);
}
输出:
[1, 6, 3, 3, 2]
[6, 1, 9, 4, 2]
[3, 9, 1, 6, 7]
[3, 4, 6, 1, 9]
[2, 2, 7, 9, 1]
PrintArray是内置java方法还是您创建的方法?Java可以识别它。@ColeHenrich我创建了一个单独的方法,我没有在代码中添加它。请添加它,谢谢!我还有一个问题与同一个问题有关。我希望这段代码能够在n时返回null当你说你想返回null时,你的意思是如果n太小,你只想让代码打印null吗?如果n太小,是的
for(int i = 0; i < n; i++)
{
for( int j = 0; j <= i; j++)
{
if(i == j)
{
grid[i][j] = lower;
}
else
{
int value = Math.abs((lower + rand.nextInt((upper - lower) + 1)));
grid[i][j] = value;
grid[j][i] = value;
}
}
}
[1, 6, 3, 3, 2]
[6, 1, 9, 4, 2]
[3, 9, 1, 6, 7]
[3, 4, 6, 1, 9]
[2, 2, 7, 9, 1]