Java 如何在分数类中打印双精度
这个程序应该接收两个分子和两个分母,并以分数形式输出它们,同时还将所述分数相加和相乘。它还要求我有一个驱动程序和分数类,它执行加法、乘法、打印分数和作为双精度打印。这属于分数类。我不知道如何让分数在我的分数课上打印成双精度。我想知道如何使printAsDouble()与我所拥有的一起工作。还有一种方法可以使用分数相加或分数多重的输出并通过printAsDouble()发送吗 这是我的密码:Java 如何在分数类中打印双精度,java,oop,double,fractions,Java,Oop,Double,Fractions,这个程序应该接收两个分子和两个分母,并以分数形式输出它们,同时还将所述分数相加和相乘。它还要求我有一个驱动程序和分数类,它执行加法、乘法、打印分数和作为双精度打印。这属于分数类。我不知道如何让分数在我的分数课上打印成双精度。我想知道如何使printAsDouble()与我所拥有的一起工作。还有一种方法可以使用分数相加或分数多重的输出并通过printAsDouble()发送吗 这是我的密码: public class Fraction { int numer, denom; d
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)的代码
thensum.printAsDouble()代码>。顺便说一句,如果您向分数
类添加一个以分子和分母为参数的构造函数,这种事情会容易得多。