2

スキャナーを使用してテキストファイルから行を印刷しようとしていますが、whileループがファイルを通過するまで、新しい行のみを印刷する前に最初の行のみを印刷します。

String line;
File input = new File("text.txt");
Scanner scan = new Scanner(input);
while (scan.hasNext()) //also does not work with hasNextLine(), but additional error
{
line = scan.nextLine();
System.out.println(line);
//other code can see what is in the string line, but output from System.out.println(line); is just a new line
}

System.out.println()をこのコードで動作させるにはどうすればよいですか?

4

2 に答える 2

3

これはのJavadocですnextLine()

このスキャナーを現在の行を超えて進め、スキップされた入力を返します。このメソッドは、最後の行区切り記号を除いて、現在の行の残りを返します。位置は次の行の先頭に設定されます。

next()代わりに必要なもの:

このスキャナーから次の完全なトークンを見つけて返します。完全なトークンの前後には、区切り文字パターンに一致する入力があります。このメソッドは、hasNext()の前回の呼び出しがtrueを返した場合でも、入力がスキャンされるのを待っている間にブロックされる可能性があります。

コードは次のようになります。

while (scan.hasNext())
{
  line = scan.next();
  System.out.println(line);
}
于 2012-04-30T01:18:24.713 に答える
1

.next()メソッドを使用できます。

String line;
File input = new File("text.txt");
Scanner scan = new Scanner(input);
while (scan.hasNext()) //also does not work with hasNextLine(), but additional error
{
    line = scan.next();
    System.out.println(line);
}
于 2012-04-30T01:21:36.330 に答える