2015-10-20 89 views
0
public static int[][] toRGB(float[][] gray) { 
    int [][]imageRGB; 
    for(int i=0; i<gray.length;i++) { 
     for(int j=0; j< gray[0].length; j++) { 
      imageRGB[i][j]=getRGB(gray[i][j]); 
     } 
    } 
    return imageRGB; 
} 

此方法不起作用。 Java告訴我這是因爲變量imageRGB沒有被初始化。任何想法如何解決這個問題?方法中的局部變量

+1

你剛纔定義的手柄點爲null,則未初始化的 –

+4

可能的複製[語法創建一個二維數組(http://stackoverflow.com/questions/12231453/syntax-for -creating-a-two-dimensional-array) –

+0

你應該知道這個長度,因爲你有'gray'數組作爲參數(它有一個長度)。 –

回答

0

與成員變量不同,缺省情況下,本地變量在Java中未初始化。在Java中,成員變量(Objects)默認初始化爲null。因此編譯器不會抱怨,但是你的代碼在運行時會拋出NullPointerException。爲避免異常,您必須在使用它之前創建它的實例(使用new)。

就你而言,你需要在使用它之前創建一個新的數組實例。試試這個:

int [][]imageRGB = new int[length][length]; 

如果您不確定imageRGB的長度,請嘗試在Java中使用List或Set Collection。

List<List<Integer>> = new ArrayList<>(); 
+0

在某些時候,你必須初始化成員變量以及 –

+0

謝謝指出。我在文章 –

+0

中進行了修改。我可以提出很多關於你的第一段的問題,你能否讓它更好,以便我可以投票給你?只有一點,數組是對象cuz它使用新的關鍵字,它甚至不是成員變量?我不明白Java成員變量是什麼意思? –