web-dev-qa-db-ja.com

スキャナーを使用して行末を確認するにはどうすればよいですか?

私は同様の質問を検索しましたが、どれも役に立ちませんでした。

ファイルについて考えてみましょう。

こんにちは、元気ですか?
あなたはどこにいた?

すべての行が終わった後、いくつかの操作を実行したいと思います。 next()を使用すると、最初の行の終わりに到達したときに通知されません。

また、hasNextLine()を見たことがありますが、別の行が存在するかどうかしかわかりません。

10
user1806722

複数のスキャナーを使用することを検討してください。1つは各行を取得し、もう1つは受信後に各行をスキャンします。私がしなければならない唯一の警告は、それを使い終わった後、あなたは必ず内側のスキャナーを閉じなければならないということです。実際には、スキャナーの使用が終了したら、allスキャナーを閉じる必要がありますが、特に内部スキャナーは、リソースを合計して浪費する可能性があるためです。

例えば。、

Scanner fileScanner = new Scanner(myFile);
while (fileScanner.hasNextLine()) {
  String line = fileScanner.nextLine();

  Scanner lineScanner = new Scanner(line);
  while (lineScanner.hasNext()) {
    String token = lineScanner.next();
    // do whatever needs to be done with token
  }
  lineScanner.close();
  // you're at the end of the line here. Do what you have to do.
}
fileScanner.close();

String.split()メソッドを使用して、テキストを1行ずつスキャンし、各行をトークンに分割できます。このようにして、1つの行がいつ終了したかを知ることができ、各行にすべてのトークンがあります。

Scanner sc = new Scanner(input);
while (sc.hasNextLine()){
    String line = sc.nextLine();
    if (line.isEmpty())
        continue;
    // do whatever processing at the end of each line
    String[] tokens = line.split("\\s");
    for (String token : tokens) {
        if (token.isEmpty())
            continue;
        // do whatever processing for each token
    }
}
1
niculare

私がこれを読んだとき、これが関連しているか、遅すぎるかどうかわかりません。私はJavaに比較的慣れていませんが、同様の問題が発生したときにこれでうまくいくようでした。単純な文字列で示されるファイルの終わり指定子を持つDO-WHILEループを使用しました。

import Java.util.ArrayList;
import Java.util.List;
import Java.util.Scanner;`enter code here`

public class Main {
    public static void main(String[] args) {
        List<String> name = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        String eof = "";

        do {
            String in = input.nextLine();
            name.add(in);
            eof = input.findInLine("//");
        } while (eof == null);

        System.out.println(name);
     }
}
0
Sunil

あなたはスキャナーとあなたが言及した方法を使うことができます:

        Scanner scanner = new Scanner(new File("your_file"));
        while(scanner.hasNextLine()){
            String line = scanner.nextLine();
            // do your things here
        }
0
vantesllar