Java "double cannot be dereferenced" 错误 - 在 double 数据类型上调用方法

Java "double cannot be dereferenced" error - calling method on double data type

我正在尝试使用以下方法在 Java 中进行温标之间的转换。问题是当我调用该方法时出现 "double cannot be dereferenced" 错误。

我知道原因是无法在原始数据类型上调用方法,我认为解决方案是使用包装器,但我不确定该代码会是什么样子(我最初尝试使用 Double包装所有产生的错误)。

public double celsius(double f) {        
    return (f - 32.0)/1.8; 
}

public double fahrenheit(double c) {        
    return c * 1.8 + 32.0;
}

public void doConversion() {
    double tempC = 0.0;
    double tempF = tempC.fahrenheit; // double cannot be dereferenced error
}

而不是

double tempF = tempC.fahrenheit;

使用

double tempF = fahrenheit(tempC);

您已经在 class 中定义了方法。在进行转换时,您只需像下面这样调用这些方法:

public void doConversion() {
    double tempC = 0.0;
    double tempF = fahrenheit(tempC);
}

希望对您有所帮助!

做这样的事情:

public class temperature{
    public double T; //in C

    public temperature(double T){
        this.T = T;
    }

    public double getC(){
        return T;
    }

    public double getF(){
        return T * 1.8 + 32.0;
    }
}

要使您的代码正常工作,您需要:

public void doConversion() {
    double tempC = 0.0;
    double tempF = fahrenheit(tempC);  // call your function
}

double tempF = tempC.fahrenheit; 是一个问题的原因是 .(即点)是为了允许 classes 和对象访问它们的成员字段和方法。

类型double的变量是原始类型;它不是 class 或对象,因此点运算符不能与它们一起使用。

消息中的措辞是因为 classes 及其实例(即对象)始终是 references。换句话说,如果您执行以下操作:

List<DisplayMode> displayModes = new ArrayList<>();

变量displayModes持有列表的引用(即指向),但不是列表本身。然后你可以做类似 displayModes.add(new DisplayMode(...));

请注意,您需要将 new 运算符与 classes 一起使用,但不能与原语一起使用。

另一方面,如果你写:

int x = 5;

变量x就是值本身。

如果您真的想使用点运算符,请考虑以下内容:

Temperature temp = new Celsius(0.0);
System.out.println(temp.toFahrenheit().toString());

假设您有一个名为 Temperature 接口 ,至少有一个名为 toFahrenheit() 的方法和具体的 classes CelsiusFahrenheit 实现 所述接口。

public interface Temperature {
    Temperature toFahrenheiht();
}

public class Celsius implements Temperature {
    // ...
}