我正在编写一个只读取文本文件并打印出行的类。我在包含BufferedReader rd = new BufferedReader(new FileReader(“file.txt”))的行上收到错误;说令牌“;”上的语法错误,{在此令牌后预期。我已经尝试将它放在一个方法中,并且在一个try catch块中,因为它建议但是我无法解析rd变量。我正在使用acm包,所以其他一些语法可能看起来不同但我没有收到任何其他错误。任何帮助将不胜感激=)
import acm.program.*;
import acm.util.*;
import java.io.*;
import java.util.*;
public class FileReading extends ConsoleProgram {
BufferedReader rd = new BufferedReader(new FileReader("file.txt"));
try {
while (true) {
String line = rd.readLine();
if (line == null) {
break;
}
println(line);
}
rd.close();
}
catch (IOException ex) {
throw new ErrorException(ex);
}
}
}
答案 0 :(得分:3)
这样的代码块应该包含在方法或静态子句中。类似的东西:
public class FileReading extends ConsoleProgram {
public void readFile(){
BufferedReader rd = null;
try {
rd = new BufferedReader(new FileReader("file.txt"));
while (true) {
String line = rd.readLine();
if (line == null) {
break;
}
println(line);
}
}catch (IOException ex) {
throw new ErrorException(ex);
}finally{
try{
rd.close();
}catch (IOException ex) {
throw new ErrorException(ex);
}
}
}
}
答案 1 :(得分:1)
正如其他人所回答的那样,你无法在类的一般部分提供代码,它必须在方法或静态块中。
通过将代码块放在构造函数中,问题就消失了。 例如,见下文。
import acm.program.*;
import acm.util.*;
import java.io.*;
import java.util.*;
public class FileReading extends ConsoleProgram {
public FileReading()
{
BufferedReader rd = new BufferedReader(new FileReader("file.txt"));
try {
while (true) {
String line = rd.readLine();
if (line == null) {
break;
}
println(line);
}
rd.close();
}
catch (IOException ex) {
throw new ErrorException(ex);
}
}
}
}
答案 2 :(得分:0)
创建一个方法......并在其中执行此操作...不直接在类
中例如:
public void go()
{
BufferedReader rd = new BufferedReader(new FileReader("file.txt"));
try {
while (true) {
String line = rd.readLine();
if (line == null) {
break;
}
println(line);
}
rd.close();
}
catch (IOException ex) {
throw new ErrorException(ex);
}
}
}