我正在尝试将字符串数组转换为双精度数组。 我对ArrayList<>()非常熟悉,但我看到有一个示例代码,double []。
示例:list = [“1”,“2”,“3”] 期望的回报:数字= [1,2,3]
public double[] ConversionNumber
{
double[] sequence = new double[list.size()];
for(String element:list){
double val = Double.parseDouble(element);
sequence.add(val)}
return sequence;
当我这样做时,我在Bluej编译器中出错:“找不到符号方法添加(双精度)。
解决这个问题的好方法是什么(我是Java的初学者)。
谢谢!
答案 0 :(得分:2)
如果list
是数组,则list.size()
将失败。我想我们可以假设它应该是List<String>
。并且您通过索引访问数组。另外,我认为它应该是你的方法的一个参数。接下来,方法名称的Java约定是camelCase。
public double[] conversionNumber(List<String> list) {
double[] sequence = new double[list.size()];
int pos = 0;
for (String element : list) {
double val = Double.parseDouble(element);
sequence[pos++] = val; // <-- post-increment
}
return sequence;
}
答案 1 :(得分:1)
通常,如果您正在使用集合,那么您将全程使用集合。将Lists用于一件事情是不好的形式,但是为另一件事使用数组。因此建议使用List<Double>
而不是double[]
public List<Double> parseDoubles(List<String> strings) {
List<Double> doubles = new ArrayList<>(strings.size());
for(String string : strings) {
doubles.add(new Double(string));
}
return doubles;
}
答案 2 :(得分:0)
错误发生是因为数组没有添加&#39;方法。你会想做类似的事情:
double[] sequence = new double[list.length];
for(int i = 0; i < list.length; i++){
sequence[i] = Double.parseDouble(list[i]);
}
如果我认为list
是实际的List
而不是String[]
,那么您可以这样做:
double[] sequence = new double[list.size()];
for(int i = 0; i < list.size(); i++){
sequence[i] = Double.parseDouble(list.get(i));
}
答案 3 :(得分:0)
以下代码适用于您的情况:
java.util.List<String> list = java.util.Arrays.asList("1", "2", "3");
public double[] ConversionNumber() {
double[] sequence = new double[list.size()];
int i = 0;
for(String element:list){
double val = Double.parseDouble(element);
sequence[++i] = val;
}
return sequence;
}
答案 4 :(得分:-2)
在此处更改您的代码
for(String element:list){
double val = Double.parseDouble(element);
sequence.add(val)
}
如果您的list
是List
:,请
for(int i=0;i<list.size();i++){
double val = Double.parseDouble(list.get(i));
sequence[i]=val;
}
如果您的list
是Array
,请更改为:
for(int i=0;i<list.length;i++){
double val = Double.parseDouble(list[i]);
sequence[i]=val;
}