Java 声明后,编译器找不到RandomAccessFile

Java 声明后,编译器找不到RandomAccessFile,java,declaration,random-access,Java,Declaration,Random Access,下面的代码在我尝试编译时产生以下错误: 找不到符号 符号:可变飞机文件 错误由最后一条语句产生 为什么在声明RandomAccessFile对象后找不到它 谢谢 public static void main(String[] args) { try { RandomAccessFile airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw"); } catch (FileNo

下面的代码在我尝试编译时产生以下错误:

找不到符号
符号:可变飞机文件

错误由最后一条语句产生

为什么在声明RandomAccessFile对象后找不到它

谢谢

public static void main(String[] args)
{

    try
    {
        RandomAccessFile airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw");
    }
    catch (FileNotFoundException fnfe)
    {
        fnfe.printStackTrace();
    }

    airplanesFile.writeUTF("Test");
}

这超出了范围。try-catch包含声明

如果在任何
{
}
内的代码块内声明变量/对象,则不能在代码块外使用它。你必须做

airplanesFile.writeUTF("Test");

在您的情况下,在try catch中。

因为一旦完成try块,您的
airplanesFile
就超出了范围。请参见

,这是因为airplanesFile是一个局部变量,仅存在于try块中。尝试阅读。

这与变量范围有关<代码>飞机文件在try块的大括号内声明。当编译器点击try块的右大括号时,它将超出范围

声明
RandomAccessFile airplanesFile=null在try语句之前,并改变
RandomAccessFile airplanesFile=newrandomAccessFile(“airplanesFile.ran”,“rw”);

to
airplanesFile=新的随机访问文件(“airplanesFile.ran”、“rw”)和您的问题应该消失。

因为airplanesFile仅在try块中有效。 试试这个:

public static void main(String[] args)
{
    RandomAccessFile airplanesFile = null;

    try
    {
         airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw");
    }
    catch (FileNotFoundException fnfe)
    {
        fnfe.printStackTrace();
    }

    try {
        airplanesFile.writeUTF("Test");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

愚蠢的我。。。我忘了试块不在范围内。。。Yasin在将writeUTF方法调用放在try块中也有一个很好的观点,因为它可以引发IOException。我对回复的速度、数量和质量感到惊讶。我一定会留在这里:-)谢谢!!!