我在try块外声明了一个bufferedimage,并在其中初始化它。但这似乎不起作用,因为编译器考虑到局部变量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);
}
顺便说一句,我已经尝试了这个链接的解决方案,它不适合我。
1条答案
按热度按时间5ktev3wc1#
您尚未初始化变量,
i
因此你得到了这个错误。代替
具有
为什么需要初始化?
编译器不知道什么值
ImageIO.read(new File("forest.jpg"))
将返回,因此必须为i
您要分配给的ImageIO.read(new File("forest.jpg"))
.