2012-03-26 27 views
0

你可以創建一個行的代碼,while循環中,這將創造一個新的數組變化數組的名字與while循環的每次迭代?Java數組的創建和陣列名稱更改

實施例:

int size = 10; 
int name_count = 1; 

while(size <= 100) 
{ 
    //name_count is changing the name of the array by calling it 
    // "array1", "array2", etc... 
    //I know this may not be correct code for changing the name of 
    // the array, but it is suppose to get the point across. 
    int[] array(name_count) = new int[size]; 

    for (int i = 0; i <= size; i++) 
    { /* Adding numbers to an array */ } 

    size = size + 5; 
    name_count++; 
} 
+2

爲什麼要在循環的每次迭代中更改數組的名稱?不知道如果得到這背後的邏輯。 :)無論如何,你的代碼實際上並不會改變數組的名稱 - 它會創建一個NEW數組,不包含任何舊數字。 – FloppyDisk 2012-03-26 16:35:49

+0

我需要創建19個不同的數組,第一個數組包含10個有符號整數,每個數組的大小將增加5,直到達到100。因此,想要在每次迭代中更改數組名稱。 – seiryuu10 2012-03-26 16:50:20

+0

您是否正在嘗試重新創建一個數據結構,比如ArrayList,它的數組大小隨着更多元素的添加而增加?你有兩種選擇可以更有效地解決你的問題。首先,只需提前創建所有陣列。或者第二,每次你增加5時,用'size = oldsize + 5'創建一個新數組,然後將舊值複製到新數組中。這樣你的數組會像ArrayList一樣動態增長。 – FloppyDisk 2012-03-26 17:19:30

回答

2

標識符名稱需要在編譯時定義。所以你不能在循環的每次迭代中顯式使用不同的變量名稱。

與僞碼的另一個問題是,如果陣列是內循環中聲明,它會掉下來的範圍內循環完成時,所以也就不會有太大的問題。

要做到這樣,你需要使用一些收集來保存陣列東西,它會更容易讓他們明確的對象,而不是僅僅陣列。喜歡的東西:

List<List<Integer>> listOfArrays = new ArrayList<List<Integer>>(); 
while (size <= 100) { 
    List<Integer> listOfNumbers = new ArrayList<Integer>(size); 
    /* insert loop here to add numbers to listOfNumber */ 

    size += 5; 
    name_count += 1; 
} 

然後你就可以訪問使用索引號碼中的各個列表爲listOfArrays - 相當於命名每一個與索引,但在運行時,而不是編譯時處理。

+0

我看到你要去哪裏,動態是有用的。我覺得我會碰到的唯一問題是將放在每個元素中的整數將使用'Random.nextInt()'。我可以更詳細地瞭解這個項目,但我不想在這裏。 – seiryuu10 2012-03-26 17:37:46

+0

我看不到您認爲可能導致的問題。 – 2012-03-26 19:02:27

0

您不能更改數組的名字,它只是將重新申報,每個成功的循環數組。 (這將是一個新的空白數組)。我認爲你正在尋找的是一個二維數組。

int[][] myArray = new int[3][3]; 
+0

我不想使用2D數組,因爲我必須創建19個不同的數組,Array1的大小爲10,每個數組的大小增加5,直到達到大小100。由於這個原因,陣列中會有太多的空白空間,因爲我的項目在這個事實之後要求我做。這部分只佔我總項目的5%,這是我遇到的最多問題。 – seiryuu10 2012-03-26 17:00:28

+0

我明白你的觀點,我相信Dave Costa對ArrayList的回答可能是解決方案。試一試。 – 2012-03-26 17:17:06