Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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]