gpt4 book ai didi

java - ClassCastException : java. lang.Object[] 无法转换为 java.lang.Double

转载 作者:行者123 更新时间:2023-12-01 23:12:23 24 4
gpt4 key购买 nike

我的代码遇到了一些问题。我有一个包含数据的 HashMap 。我想从哈希表中获取该数据,到目前为止,一切都正常工作,直到我尝试获取一个点的坐标。我创建了一个名为“Segments”的类,它包含一个字符串“name”和一个 double 组(经度纬度)。它应该用哈希表中的数据填充变量。在 Debug模式下,我看到了元素的经度和纬度,但它没有将它们放入我指定的数组中,并且打印出错误:

“ClassCastException:java.lang.Object[]无法转换为java.lang.Double”

这是我的代码。

    public class Segments 
{
public String name;
public double[] latitude;
public double[] longitude;

public void Read(HashMap<String,Object> segment)
{
this.name = (String) segment.get("name");

Object[] coord = (Object[]) segment.get("coordinates");
try
{
for(int i = 0; i < coord.length; i++)
{

latitude[i] = (Double)coord[0];
longitude[i] = (Double)coord[1];
}
}
catch(Exception e)
{
e.printStackTrace();
}

}

你能告诉我我做错了什么以及如何修复我的代码吗?

最佳答案

我认为主要问题是您的 coord 数组不包含坐标,而是包含坐标数组的数组。因此解决这个问题的正确方法是:

for(int i = 0; i < coord.length; i++)
{

latitude[i] = (Double)coord[i][0];
longitude[i] = (Double)coord[i][1];
}

注意循环内的第二级数组。

编辑:您可能需要向 coord[i] 添加显式转换。尝试这些 - 其中之一可能适合您:

latitude[i] = ((Double[])coord[i])[0];
longitude[i] = ((Double[])coord[i])[1];

latitude[i] = ((double[])coord[i])[0];
longitude[i] = ((double[])coord[i])[1];

latitude[i] = (Double)((Object[])coord[i])[0];
longitude[i] = (Double)((Object[])coord[i])[1];

关于java - ClassCastException : java. lang.Object[] 无法转换为 java.lang.Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com