import java.util.*;
import java.io.*;
import java.lang.*;
public class CreateFile {
final Formatter x;
public void openFile() {
try {
x = new Formatter("testing.txt");
System.out.println("File created");
} catch (Exception e) {
System.out.println("You got an error");
}
}
public void addRecords() {
x.format("%s%s%s", "20", "bucky", "roberts");
}
public void closeFile() {
x.close();
}
}
我收到错误"无法为变量x"分配值。我不知道为什么"最后格式化程序x;"没有转移。
答案 0 :(得分:1)
final
关键字阻止您重新分配变量x
。您可以删除final
关键字,也可以在声明中执行初始化:
final Formatter x = new Formatter("testing.txt");
然而,由于Formatter的构造函数抛出异常,所以我们需要间接分配:
public class CreateFile {
final Formatter x = getFormatter();
private static Formatter getFormatter() {
Formatter res = null;
try {
res = new Formatter("test.txt");
} catch (FileNotFoundException e) {
}
return res;
}
}
答案 1 :(得分:0)
这样做:
import java.util.Formatter;
public class Test {
Formatter x;
public void openFile() {
try {
x = new Formatter("d:\\testing.txt");
System.out.println("File created");
} catch (Exception e) {
System.out.println("You got an error");
}
}
public void addRecords() {
x.format("%s%s%s", "20", "bucky", "roberts");
}
public void closeFile() {
x.close();
}
public static void main(String []args){
Test t=new Test();
t.openFile();
t.addRecords();
t.closeFile();
}
}
答案 2 :(得分:0)
声明为final且未初始化的变量称为空白最终变量。空白的最终变量会强制构造函数初始化它。
final Formatter x;
public CreateFile() throws FileNotFoundException {
this.x = new Formatter("test.txt");
}
您的代码无法正常工作的原因是您已将其声明为最终版,它已初始化为null,并且因为它是最终版,您无法为其重新分配值。\ n <\ n \ n <\ n / p>