2017-02-02 3 views
1

Java初心者はこちら。 ArrayListからResultオブジェクトをArrayに追加しようとしています(後でソートされます)。私はArrayListがおそらくもっとうまくいくだろうと知っていますが、この割り当てで少なくとも1つの配列を使う必要があります。配列に同じ要素が含まれているのはなぜですか?

私のコードでは、クラスEventのインスタンスである配列のコピーを作成しました。これを反復処理し、異なるParticipantオブジェクトから最良の結果を追加しようとしています。これを実行すると、最も最近追加された参加者の最良の結果が配列に追加されます(すべてのインデックスの同じオブジェクト)。リスト内のすべてのオブジェクトの結果を追加するにはどうすればよいですか?

public void createBestResultArray(Event e) {   
    resultArray = Arrays.copyOf(resultArray,e.getParticipantAmount()); 

    for(Participant p1 : participantsInEvent){ 
      for (int i = 0; i < resultArray.length ; i++){ 
      resultArray[i] = p1.getBestResult(e); 
      } 
    } 
    System.out.print(Arrays.toString(resultArray)); 
} 
+0

'Event'クラスのコードを貼り付けることができるかどうかを分析する方が簡単です。 'participantsInEvent'変数は何ですか?最後に追加された参加者の最良の結果_参加者が配列に追加されました。つまり、配列全体にただ1つの要素が含まれていますか? –

+0

@Nathalie私の答えはあなたの問題を解決しましたか?そうでない場合は、さらに明確にするためにコメントを残してください。また、[誰かが私の質問に答えるとどうすればいいですか?](http://stackoverflow.com/help/someone-answers)も読んでください。 * Stack Overflow *でこれを行うのは良いエチケットと考えられます。 – CKing

+0

@CKingあなたの答えをありがとう!私の問題は解決されました。情報をいただきありがとうございます。私はStack Overflowを初めて使っていますので、ここでどのように動作するのかまだ分かりません。 – Nathalie

答えて

2

forループを変更する必要があります。

for(int i=0;i<participantsInEvent.size();i++) { 
    resultArray[i] = participantsInEvent.get(i).getBestResult(e) ; 
} 

forループあなたの質問の最初のparticipantsInEventから参加者を取り、次のようparticipantsInEventListであると仮定すると、あなたのループを変更します。 2番目のforループは、参加者の最良の結果をresultArrayのすべてのインデックス位置にコピーします。このプロセスは参加者ごとに繰り返されます。あなたは当然、participantsInEventコレクションに存在した最後の参加者にとって最良の結果を含むresultArrayが残っています。

関連する問題