【问题标题】:Local variable in a method方法中的局部变量
【发布时间】:2015-10-20 21:38:08
【问题描述】:
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 尚未初始化。知道如何解决这个问题吗?

【问题讨论】:

  • 你刚刚定义了一个指向 null 的句柄并且它没有被初始化
  • 你应该知道长度,因为你有 gray 数组作为参数(它有一个长度)。

标签: java variables methods range


【解决方案1】:

与成员变量不同,Java 中默认情况下不初始化局部变量。在 Java 中,成员变量(对象)默认初始化为 null。因此编译器不会抱怨,但您的代码会在运行时抛出NullPointerException。为避免异常,您必须在使用它之前创建它的实例(使用new)。

在您的情况下,您需要在使用之前创建数组的新实例。试试这个:

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

如果您不确定 imageRGB 的长度,请尝试在 Java 中使用 List 或 Set Collection。

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

【讨论】:

  • 我可以就你的第一段提出很多问题,你能把它做得更好,以便我投票给你吗?只是一点,数组是对象,因为它使用了 new 关键字,甚至不是成员变量?我不明白Java成员变量是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多