0

指定されたファイルを読み取り、そのファイルをリストに解析する「Move To Front」エンコーダーを作成しています。エンコーディングでは問題なく動作しますが、1 行のみのファイルでしか動作しません。問題は while ループにあると思います。

コードは次のとおりです。

while ((line = br.readLine()) !=
       null) // While the line file is not empty after reading a line from teh text file split the line into strings
{
  splitArray = line.split(" ");
}

for (int i = 0; i <= splitArray.length - 1;
     i++) // for every string in the array test if it exists already then output data accordinly
{
  if (FirstPass.contains(splitArray[i])) {
    System.out.println(FirstPass.lastIndexOf(splitArray[i]));
    FirstPass.addFirst(splitArray[i]);
    FirstPass.removeLastOccurrence(splitArray[i]);
  } else if (!FirstPass.contains(splitArray[i])) {
    FirstPass.addFirst(splitArray[i]);
    System.out.println("0 " + splitArray[i]);
  }
}

System.out.println(" ");
for (String S : FirstPass) {
  System.out.println(S);
}
4

2 に答える 2

0

splitArray を解析するコードは while ループの外側にあるため、最後の行のみが処理されます。

すべての行を処理するには、ブロック全体for ()を while ループの中に入れます。

while((line = br.readLine()) != null) // While the line file is not empty after reading a line from teh text file split the line into strings
{
    splitArray = line.split(" ");


    for(int i = 0; i <= splitArray.length - 1; i++)     // for every string in the array test if it exists already then output data accordinly
    {
        //..........
    } // end for
} // end while 
于 2013-04-09T23:18:22.800 に答える
0

中括弧の位置が間違っています:

while((line = br.readLine()) != null) 
{
    splitArray = line.split(" ");
}  // This } shouuldn't be here...
于 2013-04-09T23:18:28.917 に答える