- PR -

ArrayListの使い方について

1
投稿者投稿内容
TOMMY
会議室デビュー日: 2006/07/15
投稿数: 7
投稿日時: 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に貨幣在庫をセット()

}
}
================================================================================
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2006-07-17 14:15
ArrayListを操作している部分のコードが提示されていないので何とも言えませんが、

症状から見ると、単にaddとsetを間違えているだけのように思われます。
TOMMY
会議室デビュー日: 2006/07/15
投稿数: 7
投稿日時: 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;
}
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2006-07-17 15:17
引用:

添え字のindexを使って、該当する配列の値だけを変更したいのですが、
indexの位置に値が挿入され、それ以降の配列の値が1つずつズレてしまいます。

しかしながら、配列の該当の値だけを変更し、配列の長さなどその他には
影響を与えずに配列を操作出来るのか分かりません。



List#addというのは、まさにそういう動作をするメソッドです。
ご所望の動作をするのは、List#setの方です。
ドキュメントをちゃんと読みましょう。
TOMMY
会議室デビュー日: 2006/07/15
投稿数: 7
投稿日時: 2006-07-17 19:33
ご返答ありがとうございます。

ご指摘頂いた点を再度確認し、修正することが出来ました。

本当に助かりました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)