- - PR -
ArrayListの使い方について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-07-17 11:49
みなさん、こんにちは。
今、JDK1.4.2とTomcat4.1とEclipse3.1を使って、Webアプリケーションを 作っています。 貨幣や商品の在庫をArrayListを使って作成しているのですが、 意図しない動きになります。 添え字のindexを使って、該当する配列の値だけを変更したいのですが、 indexの位置に値が挿入され、それ以降の配列の値が1つずつズレてしまいます。 (Eclipseで変数を監視することで、そのような動きをしているところまでは、 分かりました) しかしながら、配列の該当の値だけを変更し、配列の長さなどその他には 影響を与えずに配列を操作出来るのか分かりません。 どなたかアドバイス頂けますようお願い致します。 ================================================================================ public class KaheiSyori { //********** 概要;預かり金の加算、該当貨幣在庫+1を行う //********** ;引数はbean(変数や配列を持つJavaBeans)とindex(添え字) public static void Tonyu(String index,bean jb){ int i = Integer.parseInt(index); //添え字をInt型に変換 int intK_ZAIKO = Integer.parseInt(jb.getK_ZAIKO(i)); //貨幣在庫をInt型に変換 int intKINSYU = Integer.parseInt(jb.getKINSYU(i)); //金種をInt型へ変換 jb.setAZUKIN(jb.getAZUKIN() + intKINSYU); //預かり金に該当する金種を加算 intK_ZAIKO = intK_ZAIKO + 1; //貨幣在庫にプラス1加算 String strK_ZAIKO = Integer.toString(intK_ZAIKO); //String型へ変換 jb.setK_ZAIKO(i, strK_ZAIKO); //beanに貨幣在庫をセット() } } ================================================================================ | ||||
|
投稿日時: 2006-07-17 14:15
ArrayListを操作している部分のコードが提示されていないので何とも言えませんが、
症状から見ると、単にaddとsetを間違えているだけのように思われます。 | ||||
|
投稿日時: 2006-07-17 14:59
お世話になります。
早速、返信頂きありがとうございます。 ArrayListはbeanで以下のように定義しています。 初期値は別のロジックで、 jb.setK_ZAIKO(0,jb.setK_ZAIKO(0,"10"); jb.setK_ZAIKO(0,jb.setK_ZAIKO(1,"20"); ・ ・ というように、配列の値を必要な数だけセットしています。 この段階では、Eclipseで変数を監視すると、入れたい位置(添え字位置)に 入れたい値が入ります。(余計な配列は出来ていません。) 参考書も目を通しているのですが、このようなケースに近いものがなく、 行き詰っています。 どうか引き続き、良きアドバイスをお願いします。 //============================================================================= ArrayList KINSYU = new ArrayList(); //金種 ArrayList K_ZAIKO = new ArrayList(); //貨幣在庫 private int AZUKIN; //預かり金(投入金額) //**setter******************************************************************* public void setKINSYU(int index, String KINSYU){ this.KINSYU.add(index, KINSYU); } public void setK_ZAIKO(int index, String K_ZAIKO){ this.K_ZAIKO.add(index, K_ZAIKO); } public void setAZUKIN(int AZUKIN){ this.AZUKIN = AZUKIN; } //**gettter******************************************************************* public String getKINSYU(int index){ return this.KINSYU.get(index).toString(); } public String getK_ZAIKO(int index){ return this.K_ZAIKO.get(index).toString(); } public int getAZUKIN(){ return this.AZUKIN; } | ||||
|
投稿日時: 2006-07-17 15:17
List#addというのは、まさにそういう動作をするメソッドです。 ご所望の動作をするのは、List#setの方です。 ドキュメントをちゃんと読みましょう。 | ||||
|
投稿日時: 2006-07-17 19:33
ご返答ありがとうございます。
ご指摘頂いた点を再度確認し、修正することが出来ました。 本当に助かりました。ありがとうございました。 |
1