java,try块在操作try作用域上方作用域中的变量时产生错误

wlzqhblo  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(453)

我在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);

}

顺便说一句,我已经尝试了这个链接的解决方案,它不适合我。

5ktev3wc

5ktev3wc1#

您尚未初始化变量, i 因此你得到了这个错误。
代替

BufferedImage i;

具有

BufferedImage i = null;// Or any other value as per your business requirement

为什么需要初始化?

编译器不知道什么值 ImageIO.read(new File("forest.jpg")) 将返回,因此必须为 i 您要分配给的 ImageIO.read(new File("forest.jpg")) .

相关问题