2016-05-25 15 views
-4

は、私がデータ
A1 B4
A7 B6
のA3 B9
と名前を持つこのファイル「examples.txt」を持っていると私は別に、すべての行からすべての文字列を印刷したい例えば のA1 B4 Ιは、このコードを書きましたJavaで特定の方法でファイルから文字列を印刷する方法は?

try 
{ 
    FileInputStream inputStream = new FileInputStream("example.txt"); 
} 
catch (FileNotFoundException e) 
{  
    System.out.println("Problem opening file."); 
    System.exit(0);  
} 
Scanner inputReader = new Scanner(inputStream); 
while (inputReader.hasNextLine()) 
{       
    System.out.println(inputReader.next()); 
    System.out.println(inputReader.next()); 
} 

このコードは、最後の行まで印刷、私が欲しい、まさにすべてのデータを行いますが、それは実行時エラーjava.util.NoSuchElementExceptionを引き起こし、私は理由を理解していません。この問題の解決策はありますか?

+0

あなたの質問をフォーマットし、ここにすべてのコードを入力してください –

+0

「hasNextLine」の目的は何だと思いますか? –

+0

デバッガを実行してステップ実行しましたか?例外が発生する行は何ですか?その時点でinputReaderの内容を調べましたか? –

答えて

1

あなたが探していることはこれです:

// Iterate as long as you have remaining lines 
while (inputReader.hasNextLine()) { 
    String line = inputReader.nextLine(); 
    // For each line, slip the tokens using space as separator 
    for (String token : line.split(" ")) { 
     System.out.println(token); 
    } 
} 

出力:

a1 
b4 
a7 
b6 
a3 
b9 

レスポンス更新:

実際にあなたのコードも動作しますが、あなたが直面している問題ファイルの最後に空白行があることが原因である可能性があります。それは空ですhasNextLine()trueを返しますが、トークンが残っていないので、next()に電話するとNoSuchElementExceptionがスローされます。私のアプローチでは空の行が空の配列を返すので、この問題はありません。

+0

ありがとうございます。私は分裂の方法を使用することを考え、私はそれを使用しますが、私は前のエラーをまだ理解できません。 –

+0

私の返信を更新しました。確認してください –

関連する問題