1

我正在编写一个只读取文本文件并打印出行的类。我在包含 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);
    }
}
}
4

3 回答 3

4

像这样的代码块应该包含在方法或静态子句中。就像是:

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);
        }
     }
   }
}
于 2012-07-01T12:06:27.083 回答
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);
    }
}
}
}
于 2012-07-01T12:14:00.903 回答
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);
    }
}

}
于 2012-07-01T12:17:19.387 回答