java,try块在操作来自try作用域上方作用域的变量时产生错误
我在try块外声明了一个buffereImage,并在其中初始化它。但这似乎不起作用,因为编译器认为局部变量i在try块中不可访问,它显示了以下错误行8
The local variable i may not have been initialized
我想知道为什么会发生这种情况,是否有办法避免这种情况
我可能已经在try块中包含了catch块下的所有代码,但我想知道在这里显示的情况下如何处理作用域, 这是密码
public static void main(String[] args) throws IOException{
BufferedImage i;
try {
i=ImageIO.read(new File("forest.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
panel p=new DrawImage().new panel(i);
JFrame f = new JFrame();
f.setSize(500,500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.add(p);
f.setVisible(true);
}
顺便说一下,我在this link中尝试过这个解决方案,但它对我不起作用
# 1 楼答案
您尚未初始化变量
i
,因此出现此错误替换
与
为什么需要进行此初始化
编译器不知道
ImageIO.read(new File("forest.jpg"))
将返回什么值,因此您必须为i
赋值ImageIO.read(new File("forest.jpg"))
的i
分配一些初始值