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 Celsius
和 Fahrenheit
实现 所述接口。
public interface Temperature {
Temperature toFahrenheiht();
}
public class Celsius implements Temperature {
// ...
}
我正在尝试使用以下方法在 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 Celsius
和 Fahrenheit
实现 所述接口。
public interface Temperature {
Temperature toFahrenheiht();
}
public class Celsius implements Temperature {
// ...
}