【问题标题】:amazing bug in code代码中的惊人错误
【发布时间】:2012-07-12 18:23:51
【问题描述】:

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

public static ArrayList<Shop> shops;

带字段:public static double dist;

和第二个数组列表:public static ArrayList&lt;Double&gt; 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);
}

我得到了什么结果?

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

【问题讨论】:

  • public static double dist;中删除单词static

标签: java android eclipse swing arraylist


【解决方案1】:

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

【讨论】:

  • 不客气。如果您喜欢,请随时接受答案:)
【解决方案2】:

你的领域是

public static double dist

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

您需要为每个Shop 设置非static 的值才能拥有自己的dist 值。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多