当我尝试编译它时,下面的代码会产生以下错误:
找不到符号
符号:可变飞机文件
错误是由最后一个语句产生的。
为什么在声明后找不到RandomAccessFile对象?
谢谢!
public static void main(String[] args)
{
try
{
RandomAccessFile airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw");
}
catch (FileNotFoundException fnfe)
{
fnfe.printStackTrace();
}
airplanesFile.writeUTF("Test");
}
答案 0 :(得分:2)
这与变量范围有关。 {try {1}}在try块的大括号内声明。当编译器命中try块的右括号时,它超出了范围。
在try语句之前声明airplanesFile
,并将RandomAccessFile airplanesFile = null;
更改为RandomAccessFile airplanesFile = new RandomAccessFile("airplanesFile.ran", "rw");
,您的问题就会消失。
答案 1 :(得分:1)
因为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();
}
}
答案 2 :(得分:0)
超出范围。 try catch包含声明。
如果在代码块中声明变量/对象,则在任何{
}
内,则不能在其外部使用它。你必须做......
airplanesFile.writeUTF("Test");
在try catch中,在你的情况下。
答案 3 :(得分:0)
因为一旦try块完成,你的airplanesFile
就超出了范围。见Scope of Local Variable Declarations
答案 4 :(得分:0)
那是因为airplanesFile是一个局部变量,只存在于try块中。请尝试阅读about variable scopes in java。