1
String[] strarray = new String[dataLine.size()];
strarray = dataLine.toArray(strarray);
PrintWriter pr = new PrintWriter("test.txt");    
for (int i=0; i<strarray.length; i++)
{
   pr.println(Arrays.toString(strarray));
}
pr.close();

これについてtest.txtを見ると、呼び出しと比較して、不要なデータのセット(具体的には最後のデータのいくつかのみ)が出力されます。

System.out.println(Arrays.toString(strarray));

なぜこれが起こっているのか、そしてこれを修正する方法はありますか?

ありがとう!

編集:

より具体的な例を挙げましょう。

System.out.println出力

[1040, 0, 6, 1, 11/12/2012, 3, 0, 0, 1, 12/27/2011, 0, 0]
[1041, 0, 6, 1, 11/13/2012, 3, 0, 0, 1, 12/28/2011, 0, 0]

pr.println(Arrays.toString(strarray))は出力します

[1041, 0, 6, 1, 11/13/2012, 3, 0, 0, 1, 12/28/2011, 0, 0]
[1041, 0, 6, 1, 11/13/2012, 3, 0, 0, 1, 12/28/2011, 0, 0]

およびpr.println(strarray [i]); プリント

1041
0
6
1
11/13/2012
3
0
0
1
12/28/2011
0
0

出力ファイルに必要な出力は最初のものです。ただし、最後の2つはこれを提供しません。

ありがとう!

4

1 に答える 1

2

私はあなたが探していると思います

pr.println(strarray[i]);

forループで。

あなたの質問とは関係なく、これを変更する必要があります

String[] strarray = new String[dataLine.size()];
strarray = dataLine.toArray(strarray);

String[] strarray = dataLine.toArray(new String[0]);

これを行う方法では、最初に目的のサイズの配列が作成され、次に別の配列への参照が変更されるため、最初の配列がガベージコレクションの対象になります。したがって、必要がない場合は作成しないでください。

于 2012-11-14T18:13:59.950 に答える