有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java代码中惊人的错误

你好。我有两个arraylist:

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

我得到了什么结果

enter image description here

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


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    你的领域是

    public static double dist
    

    因为它是static,所以整个Shops类只有一个dist

    您需要为每个Shop将此值设置为非static以拥有自己的dist

  3. # 3 楼答案

    由于您的字段public static double dist;是静态的,因此在整个代码执行过程中只有一个字段。因此,您要一次又一次地更新同一个变量。从dist上取下static以获得所需的结果