我不知道如何将双精度的链表转换为数组.请帮我找错.
import java.util.*;
public class StackCalculator {
private LinkedList<Double> values;
double value1 , value2 ;
public StackCalculator()
{
values = new LinkedList<Double>();
}
void push(double x)
{
values.addFirst(x);
}
double pop()
{
return values.removeFirst();
}
double add()
{
value1=pop();
value2=pop();
return (value1 + value2);
}
double mult()
{
value1=pop();
value2=pop();
return (value1 * value2);
}
double[] v = new double[10];
double[] getValues()
{
return values.toArray(v);
}
}
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 26
在List#toArray()一个的List<Double>回报Double[].这Double[]是不一样的double[].由于数组是对象而不是基元,因此自动装箱规则不适用于此处.
要么使用Double[]:
Double[] array = list.toArray(new Double[list.size()]);
Run Code Online (Sandbox Code Playgroud)
...或double[]使用简单的for循环创建自己:
double[] array = new double[list.size()];
for (int i = 0; i < list.size(); i++) {
array[i] = list.get(i); // Watch out for NullPointerExceptions!
}
Run Code Online (Sandbox Code Playgroud)
问题是列表的类型,即Double(对象),而您试图返回类型double(原始类型)的数组。如果您更改getValues()为返回Double[].
对于其他方法,这不是问题,因为 Java 自动将Doubles 转换为doubles 并返回(称为自动装箱)。对于数组类型它无法做到这一点。
| 归档时间: |
|
| 查看次数: |
42828 次 |
| 最近记录: |