2015-10-20 84 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成员变量是什么意思? –