0
私は問題の原因だと思うコードの一部を入れましたが、なぜ私が今StackOverFlowにいるのか理解できませんでした。とにかくこのクラスは私のデータを設定し、配列に渡します。配列結果は最後の結果を得続けます
public ArrayList<select.rates> caseGetRates() throws RateTableException, SessionDisconnectedException {
try {
for(int i=0;i < arrayRate.size();i++){
ArrayList<select.rates> arr = new ArrayList<select.rates>();
this.setPair(array[0]);
this.setBid((array[2]));
this.setAsk((array[3]));
arr.add(this);
}
return arr;
} finally{}
}
私は、このクラスに設定されているデータをSystem.out.print
するとき、それは私を与える:正しく、私は私が渡したときに、それは私のwebpage.However上に表示することを希望するもの
EUR/USD
1.12372
1.12384
USD/JPY
100.622
100.641
私Servlet
try {
ArrayList<select.rates> rates = example.caseGetRates();
for(int i=0;i < rates.size();i++){
System.out.println("");
System.out.println(rates.get(i).getPair());
System.out.println(rates.get(i).getBid());
System.out.println(rates.get(i).getAsk());
}
request.setAttribute("rates", rates);
}
request.getRequestDispatcher("/NewFile.jsp").forward(request, response);
にデータ私は私のサーブレットに乗る結果は次のとおりです。
USD/JPY
100.622
100.641
USD/JPY
100.622
100.641
結果は2回ループしますが、データが上書きされているように見えますが、なぜこのようなことが起こっているのかわかりません。誰かが私の間違いを指摘することを願っています。
をArrayListに追加する新しいオブジェクトを作成します'' arr.add(this); ''を使用しています。 – f1sh
arrローカル変数の有効範囲を確認してください。それはあなたがそれを返すことができるようにforループの外にあるはずです。また、これの新しいオブジェクトを作成し、それを設定してArraylistに追加します。 –
まず、Javaの基本的な基本について踏み出して学習します。同じコレクションに**同じ**オブジェクトを何度も何度も繰り返して追加するとどうなりますか? JSPやサーブレットを使って自分のやり方を使うときに何が起こるか理解していないときには、JSPやサーブレットに負担をかけないでください。 – GhostCat