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”);
toairplanesFile=新的随机访问文件(“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。我对回复的速度、数量和质量感到惊讶。我一定会留在这里:-)谢谢!!!