Java &引用;方法Double(字符串)未定义";(如何投双倍?)

Java &引用;方法Double(字符串)未定义";(如何投双倍?),java,class,casting,Java,Class,Casting,我正在使用斯坦福版本的Eclipse,因为我正在学习他们的一个视频,并使用他们的空白项目模板 基本上,我正在编写一个自定义类“分数”。其中一个构造函数获取两个数字(双精度)并将其转换为整数,然后将其存储为分子和分母 我做完了 import java.lang.*; public class Fraction { 在下面的某个地方 double numerator = Double(fractionComponents[0]); // fractionComponents is an arra

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

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

我做完了

import java.lang.*;

public class Fraction {
在下面的某个地方

double numerator = Double(fractionComponents[0]); // fractionComponents is an array of string
double denominator = Double(fractionComponents[1]);
但我得到了一个错误:

类型分数的方法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]);

您忘记了
新建

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]);

也许应该是这样

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

你错过了“新的”

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

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

避免不必要的拆箱。

可能应该这样做

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

你错过了“新的”

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

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

为了避免不必要的取消装箱。

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

double numerator = Double.parseDouble(fractionComponents[0]);
double denominator = Double.parseDouble(fractionComponents[1]);
请注意,您也可以实例化一个
Double
,但是您应该更喜欢使用静态方法,因为它为实现缓存
Double
对象留下了可能性,并且读者更清楚地知道发生了什么-您正在为一个Double值解析一个字符串


如果要使用构造函数,则无法立即明确
fractionComponents[0]
的类型,因为同时存在
Double(String)
Double(Double)
构造函数。

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

double numerator = Double.parseDouble(fractionComponents[0]);
double denominator = Double.parseDouble(fractionComponents[1]);
请注意,您也可以实例化一个
Double
,但是您应该更喜欢使用静态方法,因为它为实现缓存
Double
对象留下了可能性,并且读者更清楚地知道发生了什么-您正在为一个Double值解析一个字符串


如果要使用构造函数,则无法立即明确
fractionComponents[0]
的类型,因为存在
Double(String)
Double(Double)
构造函数。

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

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

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

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

@分析parseX()方法,如parseDouble()返回原语。但是valueOf()将返回一个Double对象,当分配给一个Double基元变量时,该对象将自动解除绑定。@仔细检查parseX()方法,如parseDouble()返回基元。但是valueOf()将返回一个Double对象,当分配给Double基元变量时,该对象将自动解除绑定。好的,非常感谢!愚蠢的我。。。忘记简单的事情。好的,非常感谢!愚蠢的我。。。忘记简单的事情。
(type)expr
(type)expr