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 に答える