"The method Double(String) is undefined"(如何投射到双倍?



我正在使用斯坦福版本的Eclipse,因为我正在从他们的一个视频中学习,并使用他们的空白项目模板。

基本上,我正在编写一个自定义类"Fraction"。其中一个构造函数接受两个数字(双精度)并将其转换为整型,然后将其存储为分子和分母。

我做过

import java.lang.*;
public class Fraction {

下面是

double numerator = Double(fractionComponents[0]); // fractionComponents is an array of string
double denominator = Double(fractionComponents[1]);

但是我得到错误:

对于类型Fraction,方法Double(String)是未定义的。

我也试过从Double扩展类。

你忘了new:

double numerator = new Double(fractionComponents[0]);
double denominator = new Double(fractionComponents[1]);

如果你只对原语double感兴趣,而不是它的对象包装器Double,那么更常见的写法是:

double numerator = Double.parseDouble(fractionComponents[0]); 
double denominator = Double.parseDouble(fractionComponents[1]);

您希望使用静态parseDouble方法,如下所示:

double numerator = Double.parseDouble(fractionComponents[0]);
double denominator = Double.parseDouble(fractionComponents[1]);

注意,您也可以实例化一个Double,但您应该更喜欢使用静态方法,因为它为实现缓存Double对象留下了可能性,并且读者更清楚正在发生什么-您正在为双精度值解析字符串。

如果要使用构造函数,则不能立即清楚fractionComponents[0]的类型,因为同时存在Double(String)Double(double)构造函数。

应该是

double numerator = new Double(fractionComponents[0]); 

等。

缺少new

即使这样,最好还是这样做:

double numerator =  Double.parseDouble(fractionComponents[0]);

避免不必要的拆箱

下面是解决这个问题的简单方法

public class Fraction {
    double numerator = Double.parseDouble(fractionComponents[0]);
    double denominator = Double.parseDouble(fractionComponents[1]);
}

最新更新