0

私は、Cpp ファイルを受け取り、ファイル内のコメントを読み取り、それに基づいてヘッダー ファイルを作成しようとするパーサー (趣味のプロジェクト) のようなものに取り組んでいます。

私が直面している問題は、java.util.Scannerが最初の行を読み込もうとしているときです。プログラムが停止し、NoSuchElementException. 何が間違っているのか本当にわかりません。パスとパス名の両方が正しく作成されていることを確認しました。ファイルがそこにある必要があり、デバッグ時に Scanner オブジェクトのフィールドも読み取ることができます。では、正確には何が問題なのですか?

ファイルに行がないと思われるかもしれないとほのめかす人もいました。

で問題が発生while((line = scanner.next()) != null) {

@Override
public void run() {
    Scanner scanner = null;
    String filename = "", path = "";
    StringBuilder puBuilder, prBuilder, viBuilder;
    puBuilder = new StringBuilder();
    prBuilder = new StringBuilder();
    viBuilder = new StringBuilder();
    for(File f : files) {
        try {
            filename = f.getName();
            path = f.getAbsolutePath();
            path = path.replace(filename, "");
            filename = filename.replace(".cpp", "");
            scanner = new Scanner(new FileReader(f));
        } catch (FileNotFoundException ex) {
            System.out.println("FileNotFoundException: " + ex.getMessage());
        }

        String line;
        String tag;
        while((line = scanner.next()) != null) {
            line = line.trim();
            if(line.startsWith(PUBLIC)) {
                tag = PUBLIC;
4

2 に答える 2

2

犯人は次のとおりです。

while((line = scanner.next()) != null)

scanner.next()NoSuchElementException使用可能なトークンがなくなると、 がスローされます。hasNext代わりに次のメソッドを使用できます。

while(scanner.hasNext()) {
    String line = scanner.next();
    //etc.
}
于 2012-12-20T00:05:25.477 に答える
0

Scanner.nextトークンがなくなると、NoSuchElement 例外がスローされます。

ファイルのリストを繰り返し処理しているようです。そのリストで最初に取得したファイルが空である可能性はありますか?

ファイルの名前を印刷して確認していただけますか?

于 2012-12-20T00:07:59.053 に答える