将字符串数组转换为双精度数组

时间:2016-03-04 21:43:39

标签: java arrays string parsing for-loop

我有一个字符串数组。用户(希望)将用{" word"," word",...}填充它,然后填充一些双打/值。我需要在前两个单词之后取出所有这些值,将它们解析为双精度数,并将它们添加到双数组中。例如,如果String数组是{" add"," key"," 2"," 4"," 5& #34;," 1"},我的新双数组将返回{1,2,4,5,1}。这是一个代码段,让我知道你可以做些什么。作为参考,getOption()是返回字符串数组的方法。谢谢!

public double[] getValues(){
    double values[] = new double[getOption().length - 2]; //first two values cannot be parsed to double
    for (int i = 2; i < getOption().length; i++){
        double valueDouble;
        valueDouble = Double.parseDouble(getOption()[i].trim());
        values[i] = valueDouble;
    }
    return values;
}

我尝试使用for循环来拉取一个值(getOption()[i]),将其解析为double,将其添加到values数组中,然后重新启动循环直到String的结尾到达了数组(getOption())。

编辑:忘了提及我的问题:它什么都不返回,并在几秒内抛出一个ArrayOutOfBoundsException 1。

3 个答案:

答案 0 :(得分:4)

首先要注意的是:

Shoot(currentTarget, 1f);

应该是:

values[i] = valueDouble;

当您将values[i - 2] = valueDouble; 偏移2时,options并未反映出这一点。

此外,您应该考虑存储values的结果。这可能就是为什么你有一个问题,因为每个人可能会有所不同。这可能是getOptions()需要用户输入或可能在调用之间切换的情况。它也更快更清晰。

getOptions()

答案 1 :(得分:1)

首先,你永远不应该说&#34;用户不会这样做&#34;,因为你无法确定。

其次,您的values数组从索引2开始,它只有4个位置。当您为其分配值时,您应该从中减去2:values[i - 2] = valueDouble;

答案 2 :(得分:0)

您应该使用comboBox.Template.FindName("PART_EditableTextBox", comboBox)。它认为它将解决问题;)