【问题标题】:Java convert ArrayList to int arrayJava 将 ArrayList 转换为 int 数组
【发布时间】:2015-06-09 19:02:26
【问题描述】:

我想将我的数组列表转换为双数组[]。 为什么我不能用这个方法投射,有什么问题?

public static void convert(ArrayList list, double array[]) {



    array = new double [list.size()];

    for (int x = 0; x < list.size(); x++) {

        array[x]=(double) list.get(x);

    }

}

我收到此错误消息

String cannot be cast to java.lang.Double

如果我将原始类型 ArrayList 更改为 Double,我的代码将无法正常工作,也许建议更改此代码?

getTest().addAll(Arrays.asList(line.split(",")));

【问题讨论】:

  • ArrayList list 中应该包含什么类型的值?他们是doubles 吗?为了清楚起见,您能否提供一个使用您的convert 函数的代码 sn-p?
  • 我提供了一段代码,它从文件中读取数据并将整数保存到数组列表中。

标签: java arrays arraylist


【解决方案1】:

使用这个:

array[x]=Double.parseDouble(list.get(x));

【讨论】:

  • 这将如何编译? Double.parseDouble 接受 String 参数。 list.get(x) 返回对象。
  • 这会将字符串转换为双精度
  • 这一行以正确的方式将字符串转换为双精度以避免字符串无法转换为java.lang.Double,所以我尝试更改代码并修复它
【解决方案2】:

异常消息表明 - 您的 ArrayList 包含字符串值。你应该使用泛型作为ArrayList&lt;String&gt; 来防止这个运行时失败

【讨论】:

    【解决方案3】:

    您不能对String 应用强制转换以使其像这样翻倍 -

    array[x]=(double) list.get(x); 
    

    您的listStirngArrayList。因此,您必须像这样将每个 String 项目从 list 转换为 double -

    public static void convert(ArrayList list, double array[]) {
    
        array = new double [list.size()];
    
        for (int x = 0; x < list.size(); x++) {
    
           array[x]=Double.parseDouble((String)list.get(x));
    
        }
    }
    

    【讨论】:

      【解决方案4】:

      我明白了。我只是将我的 ArrayList 转换为 ArrayList 那么你的代码示例将和我的一样工作......

      【讨论】:

        【解决方案5】:

        使用此代码:

        public static void convert(ArrayList list, double array[]) {
        
            array = new double [list.size()];
        
            for (int x = 0; x < list.size(); x++) 
            {
                Object value = list.get(x);
                if(value instanceof String)
                {
                    array[x]=Double.parseDouble(value.toString());
                }
                else if(value instanceof Double)
                {
                     array[x]=(double) list.get(x);
                }
                else if(value instanceof Integer)
                {
                     array[x]=(int) list.get(x);
                }
        
            }    
        }
        

        【讨论】:

          猜你喜欢
          • 2013-10-16
          • 2022-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          • 2021-02-03
          • 1970-01-01
          相关资源
          最近更新 更多