gpt4 book ai didi

java - 似乎无法让 .doubleValue() 工作(我有最新版本的 Java)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:13 25 4
gpt4 key购买 nike

所以我在创建一个名为 averageCost() 的方法时遇到了问题。我得到的错误是:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method doubleValue() is undefined for the type Double

at queue.averageCost(queue.java:38)
at queue.main(queue.java:47)

之前我尝试只向 Double 对象添加一个 double 值,这显然不起作用。所以我找到了 .doubleValue 方法,但我无法让它工作。我添加了我所有的代码(其他一切正常)以防清除任何东西。在处理其他内容时,我已经坚持了几天了,请帮忙:

    import java.util.LinkedList;
public class queue<Double> {

private LinkedList<Double> linklist;
private String symbol;
private String name;
private int shares;
private Double price;

public queue(String symbol2, String name2, int shares2, Double price2) { //so far, I have a linkedlist that works
linklist = new LinkedList<Double>();
shares = shares2;
price = price2;
symbol = symbol2;
name = name2;
bigAdd(shares, price);
}

public void add(Double e) {
linklist.add(e);
}

public Double take() {
return linklist.poll();
}

public void bigAdd (int shares2, Double price2) {
while(shares2>0) {
linklist.add(price2);
shares2--;
}
}

public double averageCost(int shares2) {
double average = 0;
int sizer = 0;
while(sizer < shares2) {
average = average + linklist.poll().doubleValue(); //this is where the problem lies
sizer++;
}
average = average/shares2;
return average;
}
}

最佳答案

你的错误来自类声明。

泛型的形参可以是T:

public class queue<T> {

现在您看到 T 没有名为 doubleValue 的方法,因为您没有约束它。

以下做你想做的:

import java.util.LinkedList;

public class queue<T extends Number> {

private final LinkedList<T> linklist;
private final int shares;
private final T price;

public queue( int shares2, T price2 ) {
linklist = new LinkedList<>();
shares = shares2;
price = price2;
bigAdd( shares, price );
}

public void add( T e ) {
linklist.add(e);
}

public T take() {
return linklist.poll();
}

public void bigAdd( int shares2, T price2 ) {
while(shares2>0) {
linklist.add(price2);
shares2--;
}
}

public double averageCost( int shares2 ) {
double average = 0;
int sizer = 0;
while( sizer < shares2 ) {
final T v = linklist.poll();
average = average + v.doubleValue();
sizer++;
}
average = average/shares2;
return average;
}
}

关于java - 似乎无法让 .doubleValue() 工作(我有最新版本的 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com