2017-03-04 38 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