gpt4 book ai didi

java - 比较两种方法时出错

转载 作者:行者123 更新时间:2023-12-02 12:01:19 26 4
gpt4 key购买 nike

所以我正在尝试做一个简单的程序,可以使用泛型找到复数的模块并比较两个模块:

public class ComplexNumber <T extends Number,U extends Number>
implements Comparable<ComplexNumber<T, U>>
{
private T real;
private U imaginary;

public ComplexNumber(T real, U imaginary)
{
this.real=real;
this.imaginary=imaginary;
}

public T getReal()
{
return real;
}

public int compareTo(ComplexNumber<?, ?> o)
{
return this.modul().compareTo(o.modul());
}

public U getImaginary()
{
return imaginary;
}

public double modul()
{
double c=Math.sqrt(real.doubleValue()*real.doubleValue()+imaginary.doubleValue()*imaginary.doubleValue());
return c;
}

public String toString()
{
return String.format("%.2f+%.2fi", real.doubleValue(), imaginary.doubleValue());
}
}

但是,它给了我两个实时错误,其中一个在 .compareTo 函数中指出:“无法在基本类型 double 上调用compareTo(double)”

以及类(class)开头的一个:“这一行有多个标记 - ComplexNumber类型必须实现继承的抽象方法 可比较>.compareTo(复数) - ComplexNumber类型必须实现继承的抽象方法“

最佳答案

您正在寻找以下内容:

@Override
public int compareTo(ComplexNumber<T, U> o) {
// logic
}

编辑

如果您确实需要使用通配符,那么您需要将类声明更改为:

class ComplexNumber <T extends Number,U extends Number> implements Comparable<ComplexNumber<?, ?>>

在这种情况下,您可以保留 compareTo 方法签名不变。

关于您收到的第一个错误,这是因为您尝试在基本类型 double 上调用 compareTo 方法,而该方法根本不起作用。要解决该问题,您需要使用 Double.compare 并传入适当的数据。

@Override
public int compareTo(ComplexNumber<?, ?> o) {
return Double.compare(modul(), o.modul());
}

关于java - 比较两种方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47239617/

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