"Метод Double (String) не определен"? (Как разыграть на удвоение?) - PullRequest
1 голос
/ 17 декабря 2011

Я знаю, что это, вероятно, очень тривиально, но, пожалуйста, держитесь со мной.

Я использую Стэнфордскую версию 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) не определен для типа Fraction.

Я также пытался расширитькласс от Double.Может кто-то помочь мне с этим?Заранее спасибо

Ответы [ 4 ]

4 голосов
/ 17 декабря 2011

Вы забыли 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]);
2 голосов
/ 17 декабря 2011

Вы хотите использовать статический метод parseDouble, например:

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

Обратите внимание, что вы также можете создать экземпляр Double, но вы должны предпочесть использовать статический метод, так как он оставляет возможности для реализации кэшировать Double объекты, и читателю будет более понятно, что происходит - Вы анализируете строку для двойного значения.

Если бы вы использовали конструктор, не сразу понятно, какой тип fractionComponents[0], потому что есть и конструктор Double(String) и Double(double).

1 голос
/ 17 декабря 2011

Ниже приведен простой способ решения проблемы

public class Fraction {
    double numerator = Double.parseDouble(fractionComponents[0]);
    double denominator = Double.parseDouble(fractionComponents[1]);
}
1 голос
/ 17 декабря 2011

Вероятно, это должно быть

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

и т. Д.

Вам не хватает «нового» * ​​1006 *

Даже тогда лучше просто сделать:

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

, чтобы избежать ненужной распаковки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...