Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在分数类中打印双精度_Java_Oop_Double_Fractions - Fatal编程技术网

Java 如何在分数类中打印双精度

Java 如何在分数类中打印双精度,java,oop,double,fractions,Java,Oop,Double,Fractions,这个程序应该接收两个分子和两个分母,并以分数形式输出它们,同时还将所述分数相加和相乘。它还要求我有一个驱动程序和分数类,它执行加法、乘法、打印分数和作为双精度打印。这属于分数类。我不知道如何让分数在我的分数课上打印成双精度。我想知道如何使printAsDouble()与我所拥有的一起工作。还有一种方法可以使用分数相加或分数多重的输出并通过printAsDouble()发送吗 这是我的密码: public class Fraction { int numer, denom; d

这个程序应该接收两个分子和两个分母,并以分数形式输出它们,同时还将所述分数相加和相乘。它还要求我有一个驱动程序和分数类,它执行加法、乘法、打印分数和作为双精度打印。这属于分数类。我不知道如何让分数在我的分数课上打印成双精度。我想知道如何使printAsDouble()与我所拥有的一起工作。还有一种方法可以使用分数相加或分数多重的输出并通过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();
    };
};

任何正确方向的帮助或建议都将不胜感激

您可能只需要这个演员阵容:

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()
在我看来实际上在语义上是错误的。

你的分子和分母已经存储在你的对象中,所以没有必要将它们传递给你的print方法。拥有
get
方法和
print
方法可能是值得的,以防这种
double
方法还有其他用途。所以我会这样做

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

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

为了防止整数除法自动进行舍入,必须强制转换为
double

看起来像
numer
类中的重复?顺便说一句,你的代码不会编译,为什么不直接编译
System.out.println(numer)
系统输出打印项次(deamon)?作为旁注:打印方法中可能不应该有参数。您只需要打印当前对象表示的分数。驱动程序(main)可能需要创建两个单独的分数对象,并使用各自的打印方法打印它们。您是否打算将此方法设置为
静态
——因为它没有使用存储在对象中的
numer
denom
?还是你打算使用这些价值观?使用与类实例变量同名的参数是非常令人困惑的,尤其是在非静态方法中。感谢您的帮助,我确实考虑过这个问题。@DavidWallace我实际上只是从问题的描述中复制了这个方法。谢谢你的关注!正确的。我已将Eclipse配置为在复制这样的名称时发出编译警告。我建议你也这样做,因为这几乎总是一个错误。太好了,编辑后你的答案看起来好多了+1,露西亚。有没有办法从分数相加中提取分数并通过printAsDouble()将其输出?是的,如果
frac1
frac2
Fraction
类型的两个变量,您可以编写类似
分数总和=frac1.add(frac2)的代码
then
sum.printAsDouble()。顺便说一句,如果您向
分数
类添加一个以分子和分母为参数的构造函数,这种事情会容易得多。