【发布时间】:2018-03-13 12:01:36
【问题描述】:
我已经完成了 Android 中的代码:
List<String> spinnerArray = new ArrayList<String>();
for (int i = 0; i < items.size(); i++) {
LinkedTreeMap<String, String> item = (LinkedTreeMap) items.get(i);
// THIS LINE THROW EXCEPTION
double d = Double.parseDouble(item.get("id").toString());
locations.put(Integer.parseInt(item.get("id")), item.get("name"));
spinnerArray.add(item.get("name"));
}
定义“d”变量时出现错误。
奇怪的是,如果我在调试中运行同一行,我会得到我需要的双精度值。
更新答案
在我的调试窗口中:
items.get(i) = {LinkedTreeMap@5317} size = 5
0 = {LinkedTreeMap$Node@5378} "id" -> "1.0"
key = "id"
value = {Double@5384} "1.0"
【问题讨论】:
-
如果我错了,请纠正我,但是 item.get("id") 会返回一个 String 那么为什么要使用 .toString() 呢?
-
你不需要
toString()。另外,它是双精度数还是整数?你解析了两次 ID -
尝试一切 :( 我已经尝试不使用 .ToString() 并且出现错误,所以我尝试使用 .ToString()
-
请将堆栈跟踪添加到问题中
-
唯一的转换发生在 (LinkedTreeMap) items.get(i) 。物品包含什么?