2

このラボでの私のタスクは、複数の入力ファイルを受け入れることであり、一部のファイルにコメントがあり、コメント行をスキップしたいことを除いて、形式はすべて似ています。例えば:

入力ファイル:

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

私がやろうとしたことは、2 つの while ループを使用したことです (必要に応じてコードを投稿できます)。私は次のことをしました

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

これは機能するはずですが、機能しません。私は何を間違っていますか。助けてください。前もって感謝します。

4

3 に答える 3

7

あなたは良い線を失っています。

String line;
while(!(line = s.nextLine()).startWith("#")) {
    array[i] = line;
}
于 2012-05-12T09:52:39.783 に答える
3

コードには 2 つの問題があります。

  1. nextLineループ内で複数回呼び出しています。
  2. while次の行がない場合、2 番目のループは失敗します。

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

int i = 0;
while(s.hasNextLine()) {
    String line = s.nextLine();
    if(!line.startWith("#")) {
          array[i++] = line;
    }    
}
于 2012-05-12T10:06:37.967 に答える
0

コードの問題は、nextLine() メソッドが 2 回 (while テスト式で 1 ​​回、while 本体で 2 回目) 呼び出されるため、配列内の代替行のみを読み取ることです。一度... Binyaminが提案したものがあなたのために働くでしょう。

于 2012-05-12T10:01:50.970 に答える