我有一个字符串数组。用户(希望)将用{" 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。
答案 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)
。它认为它将解决问题;)