从string返回double值数组

时间:2014-03-14 20:42:37

标签: java

字符串编号=(" 5,25,77,44,64,8,55,28,86,35");

我想从字符串返回一个double值数组。我无法使用以下代码成功完成此操作:

public static double[] fillArray(String numbers)
{
    String[] answers = numbers.split(",");

    double[] boom = new double[answers.length];

    for (int index = 0; index < answers.length; index++)
    {
        boom[index] = Double.parseDouble(answers[index]);
    }

    return boom;
}

我得到的错误很奇怪......

 [De56f047c 

为什么会这样,我该如何解决?

3 个答案:

答案 0 :(得分:8)

您在阵列上呼叫toString() - 并且数组不会覆盖Object.toString()。所以你从Object.toString()得到了行为:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@&#39;”以及哈希代码的无符号十六进制表示形式组成。宾语。换句话说,此方法返回一个等于值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

相反,请在结果上调用Arrays.toString(double[]),这样就可以了。所以这段代码:

double[] array = fillArray("5,25,77,44,64,8,55,28,86,35");
System.out.println(Arrays.toString(array));

...给出的结果是:

[5.0, 25.0, 77.0, 44.0, 64.0, 8.0, 55.0, 28.0, 86.0, 35.0]

我真的希望所有数组都覆盖toString()。这会让生活更简单......

答案 1 :(得分:1)

如果我按照你的意愿行事,你可以使用它 -

public static void main(String[] args) {
    String numbers = ("5,25,77,44,64,8,55,28,86,35");
    List<Double> al = new ArrayList<Double>();
    for (String str : numbers.split(",")) {
        al.add(Double.valueOf(str));
    }
    double[] boom = new double[al.size()];
    for (int i = 0; i < al.size(); i++) {
        boom[i] = al.get(i);
    }
    System.out.println(Arrays.toString(boom));
}

输出是,

[5.0, 25.0, 77.0, 44.0, 64.0, 8.0, 55.0, 28.0, 86.0, 35.0]

答案 2 :(得分:0)

您没有正确打印出数组结果。

double[] array = fillArray("5,25,77,44,64,8,55,28,86,35");

你可能这样做了:

System.out.println(array);

但你不能这样做打印出一个数组。

你得到的结果是

  

对象是实例的类的名称,at符号字符“@”,以及对象的哈希码的无符号十六进制表示。

Look here to read up on that

您需要遍历数组,或使用Arrays.toString(array[])

例如:

for (double d : array) { 
    System.out.print(d + " ");
}

或者简单地说:

System.out.println(Arrays.toString(array));