【发布时间】:2015-11-19 21:21:37
【问题描述】:
我在 try-catch 块的两个分支中创建了一个名为“file_name”的变量——因此,无论是否引发错误,它都应该可用。
但是,当我尝试在下一个 try-catch 块中使用“file_name”变量时,我得到“找不到符号”。
package timelogger;
import java.io.IOException;
public class TimeLogger {
public static void main(String[] args) throws IOException {
try {
String file_name = args[0];
}
catch (IndexOutOfBoundsException e){
String file_name = "KL_Entries.txt";
}
try {
ReadFile file = new ReadFile(file_name);
String[] aryLines = file.OpenFile();
int i;
for ( i=1; i < aryLines.length - 2; i++ ) { //-2 because last two lines not entries
//System.out.println( aryLines[ i ] ) ;
}
System.out.println(aryLines[1].charAt(24));
System.out.println(aryLines[1].charAt(48));
}
catch (IOException e){
System.out.println(e.getMessage());
}
}
}
我尝试改用“public String file_name = ...”,但这给出了错误“非法开始表达式”之类的错误。
如何编译这段代码?我觉得我错过了一些愚蠢的东西。
编辑:找到this,表明变量是try-catch 块的本地变量。因此,通过在 try-catch 之外声明变量然后在 try-catch 块中为其赋值来解决问题。
【问题讨论】:
-
在第一个 try/catch 之外声明您的
file_name,但像您当前所做的那样对其进行初始化。