如何在分数类中打印双倍

时间:2014-11-26 19:43:03

标签: java oop double fractions

该程序应该包含两个分子和两个分母,并以分数形式输出它们,同时还添加和乘以所述分数。还需要我有一个驱动程序和分数类,它执行加法,乘法,打印分数,并打印为double。这与Fraction类有关。我无法弄清楚如何在我的分数类中得到一个分数作为双重打印。我想知道如何让printAsDouble()与我所拥有的一起工作。还有一种方法可以使用Fraction add或Fraction multi的输出并通过printAsDouble()发送它吗?

这是我的代码:

public class Fraction

{

    int numer, denom;
    double end;

    public int getNumerator()
    {
        return this.numer;
    };

    public void setNumerator(int inNumer)
    {
        this.numer = inNumer;
    }

    public int getDenominator()
    {
        return this.denom;
    };

    public void setDenominator(int inDenom)
    {
        this.denom = inDenom;
    }

    public Fraction add(Fraction input)
    {
        Fraction output = new Fraction();
        output.setNumerator((this.getNumerator()*input.getDenominator())+(input.getNumerator()*this.getDenominator()));
        output.setDenominator(this.getDenominator()*input.getDenominator());
        return output;
    }

    public Fraction multi(Fraction input)
    {
        Fraction output = new Fraction();
        output.setNumerator(input.getNumerator()*this.getNumerator());
        output.setDenominator(input.getDenominator()*this.getDenominator());
        return output;
    };

    public int print(Fraction input)
    {
       System.out.println(this.getNumerator + "/" + this.getDenominator);
       System.out.println(input.getNumerator + "/" + input.getDenominator);
    };

    public double printAsDouble(numer denom)
    {
        double numer, denom;

        System.out.println();
        System.out.println();
    };
};

任何帮助或正确方向的观点都将不胜感激!

2 个答案:

答案 0 :(得分:2)

你可能只需要这个演员:

public void printAsDouble()
{
    double result = (double)numer / denom; // class attributes
    System.out.println(result);
}

or

public double getAsDouble()
{
    double result = (double)numer / denom; // class attributes
    return result;
}

否则double result = numer / denom;会被投放到int

double printAsDouble()看起来在语义上对我来说是错误的。

答案 1 :(得分:0)

您的分子和分母已存储在您的对象中,因此将它们传递给您的打印方法毫无意义。如果您对此get有其他用途,那么使用print方法和double方法可能是值得的。所以我会这样做。

public double getValue() {
   return (double)numer / denom;
}

public void printAsDouble() {
    System.out.println(getValue());
}

强制转换为double是必要的,以防止整数除法自动进行舍入。