“方法Double(String)未定义”? (如何施展为Double?)

时间:2011-12-17 05:13:55

标签: java class casting

我知道这可能是非常微不足道的,但请光临我。

我正在使用Stanford版本的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扩展这个类。有人可以帮我弄这个吗?提前致谢

4 个答案:

答案 0 :(得分:4)

您忘记了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]);

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

可能应该是

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

等。

你错过了'新'

即便如此,最好还是这样做:

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

避免不必要的拆箱。

答案 3 :(得分:1)

以下是解决问题的简单方法

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