Java 在单独的方法中使用PrintWriter类
您好,正在开发一个将数据写入文件的小程序。我使用if-else语句进行验证,因此需要在单独的方法中使用PrintWriter和FileWriter类/声明。然后我用主类的构造函数调用这个方法。我遇到的问题是,当我将Printwriter类移动到它自己的方法时,我无法再从我的button click aciton Listener访问它 代码:Java 在单独的方法中使用PrintWriter类,java,printwriter,println,Java,Printwriter,Println,您好,正在开发一个将数据写入文件的小程序。我使用if-else语句进行验证,因此需要在单独的方法中使用PrintWriter和FileWriter类/声明。然后我用主类的构造函数调用这个方法。我遇到的问题是,当我将Printwriter类移动到它自己的方法时,我无法再从我的button click aciton Listener访问它 代码: 当使用outputFile时。我收到一个错误,因为它找不到outputFile。为什么“这不起作用?”将PrintWriter定义为主计算中的实例变量 不
当使用outputFile时。我收到一个错误,因为它找不到outputFile。为什么“这不起作用?”将PrintWriter定义为主计算中的实例变量 不确定你想用这个做什么 但是,如果您在同一个类中工作,则将其公开以使其工作,或者不要使用任何修饰符 所以你的代码应该是
public class MyClass
{
public PrintWriter outputFile;
.....
}
然后在使用该方法时实例化该实例
outputFile = new PrintWriter(fw);
首先(按照惯例),Java方法名称以小写字母开头。其次,您没有返回PrintWriter
,而是将其分配给方法局部变量-
private PrintWriter openFilePW(){
try{
String inputFileName = "addressBook.txt";
FileWriter fw = new FileWriter(inputFileName, true);
return new PrintWriter(fw);
} catch(IOException error) {
JOptionPane.showConfirmDialog(null, error);
}
return null;
}
或者,您可以将PrintWriter
分配给类级变量
private PrintWriter outputFile = null;
private void openFilePW(){
try{
String inputFileName = "addressBook.txt";
FileWriter fw = new FileWriter(inputFileName, true);
outputFile = new PrintWriter(fw);
} catch(IOException error) {
JOptionPane.showConfirmDialog(null, error);
}
}
可能是范围问题
outputFile
仅在try
块中定义,因此在其他地方使用它显然是一个问题。也许把它变成一个实例变量?谢谢,这很有效。我没有意识到,当您在try块中定义变量时,它仅在该语句中可见。我还以为是全班同学呢,谢谢你的努力。我没有意识到,当您在try块中定义变量时,它仅在该语句中可见。我假设它是类范围的。事实上,这是一个双重问题,它不适用于你,不是因为它在一个try块中,一个方法中声明的所有变量都是这个方法的局部变量,只有这个方法,尝试在方法内部声明一个int,但在try-catch块之外,这将是同一个问题。这是一个双重问题,因为即使在相同的方法中,try块中的变量也只是try块的局部变量!如果你想在外面使用它,你必须在外面声明
private PrintWriter outputFile = null;
private void openFilePW(){
try{
String inputFileName = "addressBook.txt";
FileWriter fw = new FileWriter(inputFileName, true);
outputFile = new PrintWriter(fw);
} catch(IOException error) {
JOptionPane.showConfirmDialog(null, error);
}
}