所以我遇到以下代码时出现问题。
public class bw {
public static int checked[][];
public static BufferedImage input;
public static void floodfill(int j, int i, int color, int spotColor, int th) throws Exception {
input.setRGB(j, i, color);
}
public static void main(String args[]) throws Exception {
BufferedImage input = ImageIO.read(new File("C:\\Users\\Aditya\\Desktop\\Lena.png"));
checked = new int[input.getHeight()][input.getWidth()];
floodfill(250, 310, 0, input.getRGB(250,310), 35);
}
}
从代码中取出了大部分不相关的部分。已检查的静态变量工作正常。但是我在main函数中初始化的输入变量仍然是null。它给了我洪水填充的空指针异常。
答案 0 :(得分:3)
你有一个同名的局部变量,在main方法中有一个local variable
和一个static attribute
。因此,您的静态属性不会被初始化而不是local variable
初始化
答案 1 :(得分:0)
试试这个
public class bw{
public static int checked[][];
public static BufferedImage input;
public static void floodfill(int j, int i, int color, int spotColor, int th) throws Exception{
input.setRGB(j, i, color);
}
public static void main(String args[]) throws Exception{
input = ImageIO.read(new File("C:\\Users\\Aditya\\Desktop\\Lena.png"));
checked = new int[input.getHeight()][input.getWidth()];
floodfill(250, 310, 0, input.getRGB(250,310), 35);
}
}
你已经声明变量input
两次,所以main方法中的输入变量被初始化而另一个(静态属性)不是