【发布时间】:2014-03-10 17:28:49
【问题描述】:
对于家庭作业,我应该使用以下驱动程序来输出两个输入分数的总和和乘积,既作为分数又作为双精度数。
问题是我创建的 Add() 方法不断返回“0/0 NaN”,而 Multiply() 方法不断返回“1/1 1.0”。我一直在尝试很多不同的东西,但我不知道如何从驱动程序中获取覆盖新分数的方法。
这是我的司机:
import java.util.Scanner;
public class FractionDriver {
/**
* @param args
*/
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
Fraction c, d, x; // Fraction objects
System.out.println("Enter numerator; then denominator.");
c = new Fraction(stdIn.nextInt(), stdIn.nextInt());
c.print();
System.out.println("Enter numerator; then denominator.");
d = new Fraction(stdIn.nextInt(), stdIn.nextInt());
d.print();
x = new Fraction(); // create a fraction for number 0
System.out.println("Sum:");
x.add(c).add(d);
x.print();
x.printAsDouble();
x = new Fraction(1, 1); // create a fraction for number 1
System.out.println("Product:");
x.multiply(c).multiply(d);
x.print();
x.printAsDouble();
System.out.println("Enter numerator; then denominator.");
x = new Fraction(stdIn.nextInt(), stdIn.nextInt());
x.printAsDouble();
} // end main
} //end class
这是我的分数类:
package ch6;
public class Fraction
{
private int numerator;
private int denominator;
//*************************************************************
public Fraction()
{
}
//*************************************************************
public Fraction(int numerator, int denominator)
{
this.numerator = numerator;
this.denominator = denominator;
}
//**************************************************************
public int getNumerator()
{
return this.denominator;
}
//**************************************************************
public int getDenominator()
{
return this.denominator;
}
//**************************************************************
public Fraction add(Fraction c)
{
denominator = this.getDenominator() * c.getDenominator();
numerator = this.getNumerator() * c.getDenominator() + c.getNumerator() * this.getDenominator();
return new Fraction (numerator, denominator);
}
//**************************************************************
public Fraction multiply(Fraction c)
{
int productNumerator = this.numerator * c.numerator;
int productDenominator = this.denominator * c.denominator;
return new Fraction(productNumerator, productDenominator);
}
//**************************************************************
public void print()
{
System.out.println(this.numerator + "/" + this.denominator);
}
//**************************************************************
public void printAsDouble()
{
System.out.println((double) this.numerator / this.denominator);
}
}
【问题讨论】:
-
getNumerator { return this.denominator}?看看有什么问题吗?
标签: java methods add fractions multiplication