2017-03-04 47 views
0

我一直在绞尽脑汁想一些非常简单的事情,因为我没有在任何地方看到它的答案(或者我在搜索时很糟糕)。创建一个对称的二维阵列

我想创建一个对称的二维数组,充满了随机数从1到100(含)......这里是我有这么远

INT N = 3; int rangeOfWeights = 100;

double[][] array = new double[n][n]; 
    for(int i = 0; i < n; i++) { 
     for(int j = 0; j < n; j++) { 
      array[i][j] = rand.nextInt((rangeOfWeights)+1);   
     } 
    } 

目前,这是给像结果:

44 45 32 
9 31 53 
25 48 74 

时候,居然我想结果的一种是:

0 34 32 
34 0 23 
32 23 0 
+0

对称怎么样?对称性有很多种。 – QBrute

+0

道歉,对称如[i] [j] == [j] [i] –

+0

那你为什么不与[j] [i]呢? (并使用合适的边界) – 2017-03-04 16:31:28

回答

2

当你定义,你想创建一个2D数组,其中array[i][j] == array[j][i]。你可以一对嵌套循环,其中一个迭代到数组的大小和其他到外阵列的计数器,并在每次迭代中设置的两个对称值的值:

double[][] array = new double[n][n]; 
for(int i = 0; i < n; i++) { 
    for(int j = 0; j < i; j++) { 
     int value = rand.nextInt((rangeOfWeights)+1);   
     array[i][j] = value; 
     array[j][i] = value; 
    } 
} 
+0

这非常有帮助。我想,如果我想为每个i == j进入0,我只是在for循环中添加一个if语句? –

+1

@jpanton是的,应该这样做 – Mureinik

+2

不需要添加if条件,inner for循环条件是j hunter