0

直升机。我有两个数组列表:

public static ArrayList<Shop> shops;

带字段: public static double dist;

和第二个数组列表:public static ArrayList<Double> for_sort_shops;

我也有一个代码:

for (int i = 0; i < shops.size(); i++) {
    Log.i("palval", "for_sort_shops.get(i) = "
            + for_sort_shops.get(i));
}

for (int i = 0; i < shops.size(); i++) {
    shops.get(i).dist = for_sort_shops.get(i);
}

Log.i("palval", "---------------------------------------");
for (int i = 0; i < shops.size(); i++) {
    Log.i("palval", "shops.get(i).dist = "
            + shops.get(i).dist);
}

我得到了什么结果?

在此处输入图像描述

怎么可能?!帮助我理解。

4

3 回答 3

10

您声明dist了静态,这意味着它的值在类级别定义并在所有实例之间共享。在您的程序中,您只能看到分配给它的最后一个值。

于 2012-07-12T22:04:45.540 回答
3

你的领域是

public static double dist

因为它是,所以整个类static只有一个值。distShops

你需要使这个值非static每个Shop都有它自己的dist值。

于 2012-07-12T22:07:14.063 回答
2

由于您的字段public static double dist;是静态的,因此在整个代码执行过程中只有一个字段。所以你一遍又一遍地更新同一个变量。取消staticdist 以达到您想要的结果。

于 2012-07-12T22:06:50.033 回答