2017-08-24 65 views
0

我正在爲類項目創建一些輔助方法。我想要創建的方法之一是創建一個類型爲int的數組,名爲'name',其大小爲'size'。問題出現在我嘗試使用'name'參數創建數組的方法主體中。帶'name'參數的數組創建方法:範圍錯誤

public int[] createArray(String name, int size){ 

    int[] name = new int[size]; 

} 

除了得到一個「變量名」已在範圍內定義。錯誤,我認爲問題是我不能在構造數組中使用變量。如果是這樣的話,我是否應該在這裏不使用'String name'作爲參數?是否有某種解析/轉換我可以做?最後,我必須使用/做什麼來將方法調用中的參數傳遞給「int [] _____ = new int [size];」?

我可能只是通常在主要方法中創建2個數組,但我想知道我做錯了什麼。

最佳,

科瑞

+0

基於字符串的值,你不能選擇的變量名。 – user2357112

回答

2

重命名你的變量name

int[] name = new int[size]; 

int[] otherName = new int[size]; 

,它應該工作的罰款。由於String name用作該方法的參數,因此範圍中存在另一個名稱相同的變量。

此外,如果您想使用參數來實際命名您的數組變量,那麼您可能會嘗試在其運行時修改源代碼,而您不能。也就是說,變量String name在該方法中似乎不再有用。

+1

我確實想使用參數來命名數組變量,但現在我知道爲什麼我不能。感謝您的答覆! –

+0

@CoreyJones歡迎:)如果這有助於將其標記爲答案,以便將來也能幫助人們。 – nullpointer

0

你試圖做的事情是不可能的(除非你使用「反射」,我不會推薦給一個相對的初學者)。

您想要創建一個數組變量,其名稱要在運行時決定。你想這樣做

int[] array1; 
int[] array2; 
createArray("array1", 17); 
createArray("array2", 25); 

變量名array1array2在編譯時存在。程序運行時,它們不再可用(對於普通的Java代碼)。要傳遞給createArray()方法的參數"array1""array2"是字符串,Java運行時不會將這些字符串中的字符與數組變量相關聯。

Java的方法可以讓你想實現的是:

int[] array1 = createArray(17); 
int[] array2 = createArray(25); 
private int[] createArray(int size) { 
    return new int[size]; 
} 
+0

謝謝!我沒有理解變量名,以及在編譯時會發生什麼,比如你如何解釋它。我也很欣賞這個解決方案。 –