Java - 将数组中的String转换为double

时间:2010-03-16 12:09:18

标签: java arrays

我坚持这个非常愚蠢的事情;

我有一个像这样的文本文件;

  

您好:: 140.0 ::再见

我使用;

将其拆分为字符串数组
LS = line.split("::");

然后我尝试将包含数字的数组值转换为double,就像这样;

Double number = Double.parseDouble(LS[1]);

但是我收到以下错误消息;

  

线程“main”中的异常   java.lang.ArrayIndexOutOfBoundsException:   1

有谁知道为什么这不起作用?

8 个答案:

答案 0 :(得分:4)

我认为阅读文件存在问题。你在分裂后尝试打印线还是LS的内容吗?

答案 1 :(得分:4)

public class Test
{

    public static void main(String[] args)
    {
        String s = "140.0::156.33::155.89";
        String[] ls;
        ls = s.split("::");
        for(int i=0;i<=2;i++)
        {
            //System.out.println(ls[i]);
        double d = Double.parseDouble(ls[i]);
           System.out.println(d);
        }
    }
}

答案 2 :(得分:2)

该错误与该行代码无关。寻找您尝试访问数组索引3的地方。此示例中的LS应仅包含索引0-2。

答案 3 :(得分:1)

我认为某些行不包含指定格式的数据。该文件是否包含空行?在这种情况下,split只返回单元素数组。要找到问题,您可以打印发生错误的行(数据)。

答案 4 :(得分:0)

什么类型的LS? 这段代码适合我:

public class Test
{

    public static void main(String[] args)
    {
        String s = "Hello::140.0::Bye";
        String[] ls;
        ls = s.split("::");
        System.out.println(ls[1]);
        double d = Double.parseDouble(ls[1]);
        System.out.println(d);
    }
}

答案 5 :(得分:0)

您应该使用编译器,例如Eclipse,它允许您动态调试代码。这里的问题是Array LS的大小<= 1。这可能是由于Halo提到的文本文件读取不正确或Mnementh提到空行而引起的。对于任何不包含:: delimiter的行,都会发生这种情况。

您应该执行检查以确保Array LS包含&gt; X条目,尤其是当您从条目可能不同的文件中读入时。

double number = 0.0
if( LS.size() > 3 ){
    number = Double.parseDouble(LS[1]);
}

答案 6 :(得分:0)

import java.util.ArrayList;
import java.util.Arrays;

public class StringToDoubles {

    /**
     * @param args
     */
    public static void main(String[] args)
    {

        String CommaSeparated = "22.3 , 24.5, 44.3";

        java.util.List<String> items = Arrays.asList(CommaSeparated.split("\\s*,\\s*"));
        java.util.List<Double> out = new ArrayList<Double>(); 

        for(int i=0; i < items.size();i++)
        {
            double d = Double.parseDouble(items.get(i));
            System.out.println(d);
            out.add(new Double(d));
        }
    }

}

答案 7 :(得分:0)

objTwo.pSelf = types.MethodType(objOne.pSelf.__func__, objTwo)