2011-06-25 82 views
1

在Java中,是否有任何編寫循環的方式,以便您可以在名稱爲x{a_1[], a_2[], a_3[], ... , a_n[]}的java中快速初始化一個數組數組。或者只需要輸入它就可以完成它?在java中初始化數組名稱

我寫了一個新問題,可能會清除我想要達到的目標。 Java Poset simulation

+0

變量的名稱有時不是你想操縱或擔心的。你最好使用二維數組(它只是一個數組數組),而不用擔心你的內部數組變量名。否則,如果您絕對必須通過字符串引用信息集合,請考慮使用Map。 –

回答

1

aioobe是正確的,你也可以將其初始化爲:

int[][] matrix = { 
     { 1, 2, 3 }, 
     { 4, 5, 6 }, 
     { 7, 8, 9 } 
    }; 
+0

你不需要那些'new int []'。 – aioobe

+0

@aioobe謝謝,糾正。 – Marcelo

1

如果你已經有「行」 -arrays,a_1 ... a_n,做的最簡潔的方式是

int[] a_1 = { 1, 2, 3 }; 
int[] a_2 = { 4, 5, 6 }; 
int[] a_3 = { 7, 8, 9 }; 

int[][] matrix = { a_1, a_2, a_3 }; 

即使你使用一個循環,你仍然需要指定其中陣列a_1,a_2等, 你想迭代(所以沒有辦法提及他們全部)。

你可以明顯替代a_1{ 1, 2, 3 }等,像這樣:

int[][] matrix = { { 1, 2, 3 }, 
        { 4, 5, 6 }, 
        { 7, 8, 9 } }; 
0

二維數組是數組的數組。

// declare & allocate 
int[][] x = new int[5][4]; 

// assign value in 3rd position of the 2nd array 
x[1][2] = 5; 

// create array containing 1 & 2 in the first "row" (or array) 
// and 3 & 4 in the second one. 
int[][] x = new int {{1,2}, {3,4}}; 

// create an array of 2 arrays of different size: 
int[][] x = new int[2][]; 
x[0] = new int[4]; 
x[1] = new int[2]; 
1

Althouh你的問題是不明確的,我會盡量給它一個答案。在Java中,2D數組被視爲數組數組。如果你想獲得一個數組數組的引用,你可以使用二維數組變量,並將其每個元素作爲一個數組使用。例如,你可以通過所有的數組使用foreach循環來:

int[][] foo = new int[ 10 ][ 20 ]; 
for(int[] arrayInFoo : foo) 
{ 
    arrayInFoo[ 0 ] = ...; 
    arrayInFoo[ 1 ] = ...; 
    ... 
    arrayInFoo[ 9 ] = ...; 
}//for 

問候, 斯特凡

0

你是什麼意思與命名陣列?

a_1在你的情況下將是x [0]。

關閉時,您可以得到的是:

int a1[], a2[]; 
    int aa[][] = { (a1 = new int[] { 1 }), a2 = new int[] { 2, 3 } }; 

但數組的數組在這裏幾乎沒有增加價值。 如果你只是想初始化多維數組,像這樣做:

int ba[][] = { { 1 }, { 2, 3 }, { 2, 3, 4 }, { 2, 3, 4 } }; 

您也可以使用Arrays相同的值填充它,可惜這僅支持第一級。

int c1[] = new int[5]; 
    Arrays.fill(c1, 5); 
    int ca[][] = { Arrays.copyOf(c1, 5), 
        Arrays.copyOf(c1, 5), 
        Arrays.copyOf(c1, 5) }; 

或者:

int da[][] = new int[5][5]; 
    for (int i = 0; i < da.length; i++) { 
     Arrays.fill(da[i], 5); 
    } 

或者可能:

int ea[][] = new int[5][5]; 
    for (int i = 0; i < ea.length; i++) { 
     for (int j = 0; j < ea[i].length; j++) { 
      ea[i][j] = 5; 
     } 
    } 

用foreach:

int fa[][] = new int[5][5]; 
    for (int[] is : fa) { 
     Arrays.fill(is, 5); 
    } 

和:

int ga[][] = new int[5][5]; 
    for (int[] is : ga) { 
     for (int i : is) { 
      i = 5; 
     } 
    }