2012-05-12 17 views
2

このラボの私の仕事は、複数の入力ファイルを受け入れることです。フォーマットは、いくつかのファイルにコメントがあり、コメント行をスキップしたいという点を除いて、すべて同じです。たとえば:Java - Scanner comment skip

入力ファイル:

Input file 1 

#comment: next 5 lines are are for to be placed in an array 
blah 1 
blah 2 
blah 3 
blah 4 
blah 5 

#comment: next 2 line are to be placed in a different array 
blah 1 
blah 2 

#end of input file 1 

私がやってみました何が私が(必要であれば、私は自分のコードを投稿することができます)whileループ2を使用しました。私は以下をしました

while(s.hasNext()) { 
    while(!(s.nextLine().startWith("#")) { 
     //for loop used to put in array 
     array[i] = s.nextLine(); 
    } 
} 

私はこれがうまくいくはずですが、そうではないと感じています。私は何を正しくしていないのですか?助けてください。前もって感謝します。

答えて

1

あなたのコードには二つの問題があります。

  1. あなたがループ内で何度もnextLine以上を呼び出しているが。
  2. 次の行がない場合は、2番目のwhileループが失敗します。

次のようにコードを変更してみてください。

int i = 0; 
while(s.hasNextLine()) { 
    String line = s.nextLine(); 
    if(!line.startWith("#")) { 
      array[i++] = line; 
    }  
} 
7

あなたは良いラインを失っている、次のようになります。

String line; 
while(!(line = s.nextLine()).startWith("#")) { 
    array[i] = line; 
} 
+0

あなたはs.hasNext() –

+0

@ThomasMuellerを忘れてしまった - 私は私が目的のコードの唯一の本質を残しませんでした。 – MByD

0

nextLine()メソッドは、(一回で二回呼び出されますので、それは、配列内の唯一の代替の行を読んされますされ、あなたのコードの問題whileテストの式と2回目のwhileの中で)行が読み込まれる前に一度ではなく、ビナミミンがあなたのために働くことを提案した。