2016-03-15 55 views
0

我可以獲得移動2D陣列的特定列的一般想法嗎?我有通過雙循環填充數組,但我堅持如何處理這個問題。我不一定需要代碼。我只需要一種思考方式。在2D陣列中移動某一列

我也有另一個問題。 array.length打印出數組的長度,但我在互聯網看見了,用過的人:

for (int i=0; i<array.length; i++) 
{ 
    for (int j=0; j<array[i].length; j++) 
    array[i][j] =(int)(Math.random()*((9)+1)); 
} 

什麼是數組[我]。長度的功能?

回答

2

具體到你的問題,array [i] .length是「維度1」的「維度2」的長度。具體而言,二維數組不是「網格」,它是一個實際的排序表。如果考慮一個數據表,每一行都是一個「入口」(通常是元組或者有序的集合),如果你把第一個維度放在第一個維度上,你會得到整個行,然後第二個維度改進你的選擇。這可以垂直完成,但通常從左到右讀取數據,以便引用一行。

外部循環是維度i,然後對於給定的維度i,您將通過它作爲維度j。

基本上,int x [i] [j]是一個包含i數組的數組,其中包含j個整數。

1 2 3 ... i 
1 
2 
3 
... 
j 

這裏的安排純粹是基於但是您選擇使用它,因爲你可以交換i和j圖中,改變什麼,你只需要在它工作始終(行必須始終排等)。

根據你如何安排數據的邏輯,你的問題有兩個答案之一。如果列是你的dim1,那麼你只需將它換成一維數組。這是因爲每個數組本身都是一個容器,所以你可以移動整個容器。

1  >>  2 3 ... i 
1   shift 
2   shift 
3   shift 
...  .... 
j   shift 

如果你試圖做它的第二維...你應該能夠通過遍歷所有的「第二」一個和移動每個陣列,在內部,通過一個做到這一點。

1 2 3 ... i 
1 
VV sh sh sh   sh 
2 
3 
... 
j 
+0

你是什麼意思交換? – Kisuna97