java数组循环问题

标签 java arrays

我有一个特殊的问题,在数组中的循环中分配元素时,事情发生得很好。

当我移出循环并检查时,所有索引的相同数组值将设置为最后一个索引的数组值。以下是代码

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());

当我打印inside_loop时这基本上是在循环值中正确显示的。当执行出来并检查“outside_loop”时,所有索引的值都变为 dataModelCollection[6].getName() - 这是最后一个索引的值。 amount 的情况也是如此, date , partitionKey .

不知道我哪里错了。

无论它的值(value)如何,这里都是 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;
}

我真的不知道是什么导致了这种情况。请帮忙。

最佳答案

public static long accountNo;
public static String name;
public static double amount;
public static Date collectedDate;

这些需要是实例变量,而不是静态变量。

删除 static 关键字,它的行为应该如您所愿。

In laymans terms, what does 'static' mean in Java?

关于java数组循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508678/

相关文章:

java - 为请求提供服务的 HTTP 端点

java - 无法生成唯一的用户编号

arrays - 在 Julia 中仅用另一个数组的值替换数组中的零

java - AEM/CQ5 多个 bundle 相同的包名称和不同的数据类型属性

java - SerialVersionUID JavaDoc?

java - 从 Java 播放歌曲

arrays - 动态数组与可变长度数组

c - 使用 C 查找元素是否在数组中(语法问题)

c - 将数组分配给 C 中的结构值

javascript - 输入回文数