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

标签 java android exception

我的代码遇到了一些问题。我有一个包含数据的 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/

相关文章:

Java 枚举和其他类文件

java - 如何将与Curl命令相关的REST调用转换为java客户端?

python - Django + FastCGI - 随机引发 OperationalError

java - java中如何将多个字符串解析为int

java - 覆盖 toString 但仍然使用它来完成工作

android - 使用 Firebase 数据库首先显示新项目

android - 发布应用时找不到 zip-align

Android Flavor 特定依赖树

exception - 不能仅在 mli 文件中定义异常

java - 异常已被其他异常错误捕获