2011-07-15 4 views
0

テキストの行間に空白行がある.txtファイルを調べています。空白のファイルに2つのスキャナを使用する

私は、各行を取り、その行から各単語を取得する2番目のスキャナに渡すスキャナを持っています。

問題は、私が空の行に当たった場合、最初のスキャナが.nextLine()のヌル入力を取得していることです。私はより多くのテキストの残りの(だけでなく、空行を)持っている

  1. 、おそらくちょうどこれを確認するために、別のブール値を作るために容易になるだろう:私がいることを確認することができますどのように

  2. ブール値が正常にチェックアウトされた場合、空の行をスキップして、実際にテキストを含む行のテキストを2番目のスキャナに渡します。

私の試みはこれまでされています:

Scanner one //scans each line from file 
Scanner two //scans each word from scanner one 

public boolean more() { 
    if (two.more()) { 
     return true; 
    } else if (one.hasNext()) { 
     two = new Scanner(one.nextLine()); 
     return this.more(); 
    } else { 
     return false; 
    } 
} 

public String getText() { 
    String text = ""; 
    if(two.hasNext()) { 
     text = two.next(); 
    } else { 
     while(!one.hasNext()) { 
      one.nextLine(); 
     } 
     two = new Scanner(one.NextLine()); 
     text = two.next(); 
    } 
    return text; 
} 
+0

私はone.hasNextLineのブールチェックを()を実行した場合、私は偽の取得ファイルにはさらに多くの行があります。 – Justin

+0

あなたのコードのどこかに、おそらくコードに表示されていないバグがあります。プログラム内のさまざまな場所で何が起きているのかを知るために、printlnステートメントを使ってプログラムを振りかざしたいと思うでしょう。 –

+0

また、Scannerオブジェクトでmore()メソッドを呼び出しています: 'two.more()'が、このメソッドを持つScannerについて聞いたことはありません。 –

答えて

0

簡単な解決策は、あなたが最初にスキャナから取得する行をトリミングし、そうでない場合のみ第2のスキャナにそれを渡すことです空の。例えば:

このファイルでテスト
import java.util.Scanner; 

public class ScannerTest { 
    private static final String TXT = "ScannerTest.txt"; 

    public static void main(String[] args) { 
     Scanner outerScan = 
      new Scanner(ScannerTest.class.getResourceAsStream(TXT)); 
     while (outerScan.hasNextLine()) { 
     String line = outerScan.nextLine().trim(); 
     if (!line.isEmpty()) { 
      Scanner innerScan = new Scanner(line); 
      while (innerScan.hasNext()) { 
       String nextToken = innerScan.next(); 
       System.out.println("Token: " + nextToken); 
      } 
      innerScan.close(); 
     } 
     } 
     outerScan.close(); 
    } 
} 

: ScannerTest.txt

Hello world 

goodbye world 

what the heck 

出力:

Token: Hello 
Token: world 
Token: goodbye 
Token: world 
Token: what 
Token: the 
Token: heck 
関連する問題