2015-11-05 65 views
1

想象的陣列定義如下:查找2D陣列的寬度具有零長度

int n = 10; 
int[][] arr = new int[0][n]; 

比方說這個數組傳遞到幾個方法不保留ñ。我們能從這個數組中獲得n嗎?

arr [0] .length肯定不起作用。

+0

您是打算對此做些什麼或僅僅是個人的好奇心?如果您將其更改爲'new int [1] [n];'那麼您可以使用'arr [0] .length'獲得n。這隻有在你使用1或者指定一個你知道長度爲「n」的單元格的時候。正如其他人指出的那樣,「n」可以在不同的細胞之間有所不同。創建n的「行」並不真正做任何事情。 – Monkeygrinder

+0

你會介意接受一個答案,如果它真的幫助你? – rmalchow

回答

1

由於此數組中的每個第二級都是不同的,所以您將無法找出答案。

這樣考慮:

int[][] a = new int[10][20]; 
    a[0] = new int[5]; 
    a[1] = new int[8]; 
    for(int[] x : a) { 
     System.err.println(x.length); 
    } 

,你會看到,每個X成分實際上是一個指針,它指向可以設置和獨立地mondified另一個INT []對象。通過做

int[][] a = new int[0][n]; 

你從來沒有真正產生任何的指針,你不要在那裏創建任何Y分量的。

3

我們可以從這個數組中獲得n嗎?

我想它的方式是這樣的。該生產線

int[][] arr = new int[a][b]; 

是基本相同

int[][] arr = new int[a][]; 
for (int i = 0; i < a; i++) 
    arr[i] = new int[b]; 

如果a == 0,則for循環什麼也不做,所以b值無關緊要。