私は配列のループ内の要素を割り当てている間に問題は起こりません。java配列のループの問題
ループから外れてチェックすると、すべてのインデックスの同じ配列値が最後のインデックスの配列値に設定されます。 iはループの値が適切に示されている基本的にあるinside_loop
を印刷するとき、次のコード
JSONObject js = new JSONObject(json_string);
JSONArray jsonArray=js.getJSONArray("customer");
DataModelCollection[] dataModelCollection = new DataModelCollection[7];
for (int i=0;i<jsonArray.length();i++) {
JSONObject json = jsonArray.getJSONObject(i);
amont = json.getLong("BalanceAmount");
custName = json.getString("CustName");
partitionKey = json.getInt("PartitionKey");
String date1 = json.getString("date");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = df.parse(date1);
dataModelCollection[i] = new DataModelCollection();
dataModelCollection[i].setName(custName);
dataModelCollection[i].setAccountNo(partitionKey);
dataModelCollection[i].setAmount(amont);
dataModelCollection[i].setCollectedDate(date);
Log.i("inside_loop", ""+dataModelCollection[i].getName());
}
Log.i("outside_loop", ""+dataModelCollection[0].getName());
Log.i("outside_loop", ""+dataModelCollection[1].getName());
Log.i("outside_loop", ""+dataModelCollection[2].getName());
Log.i("outside_loop", ""+dataModelCollection[3].getName());
Log.i("outside_loop", ""+dataModelCollection[4].getName());
Log.i("outside_loop", ""+dataModelCollection[5].getName());
Log.i("outside_loop", ""+dataModelCollection[6].getName());
あります。実行が終了し、 "outside_loop"をチェックすると、すべてのインデックスの値がdataModelCollection [6] .getName() - 最後のインデックスの値になります。 amount
,date
,partitionKey
の場合も同様です。
どこが間違っているのか分かりません。何でもその価値について
ここDataModelCollection
モーダルクラスです:
public class DataModelCollection {
public static long accountNo;
public static String name;
public static double amount;
public static Date collectedDate;
public DataModelCollection(long accountNo, String name, double amount, Date collectedDate) {
this.accountNo = accountNo;
this.name = name;
this.amount = amount;
this.collectedDate = collectedDate;
}
public DataModelCollection() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public Date getCollectedDate() {
return collectedDate;
}
public void setCollectedDate(Date collectedDate) {
this.collectedDate = collectedDate;
}
public long getAccountNo() {
return accountNo;
}
public void setAccountNo(long accountNo) {
this.accountNo = accountNo;
}
私はこのような状況を引き起こしているかの本当に無知です。助けてください。
'static'キーワードは何をしていますか? – resueman