我正在为学校编写一个程序,用分数进行乘法和除法。当我运行当前代码时,将分数2/4和4/6相乘得到0/1。当我单独测试2/4和4/6分数的分子/分母的组件时,它给了我0 1 0 1。
这是输出和代码,首先是代码。
import java.util.*;
import java.util.Scanner.*;
class Fraction
{
protected static int numerator, denominator;
public static void main(String args[])
{
System.out.println("Chp. 25 LAB 1");
System.out.println();
// main commands for testing first class Fraction
Fraction f1 = new Fraction(2,4);
System.out.println("numerator of fraction1 is " + f1.getNum());
System.out.println("denominator of fraction1 is " + f1.getDen());
f1.displayFraction();
f1.alterFraction(3,6);
f1.displayFraction();
// main commands for testing second class FractionArithmetic
f1 = new Fraction(2,4);
Fraction f2 = new Fraction(4,6);
FractionArithmetic f3 = new FractionArithmetic();
f3.multFracts(f1, f2);
f3.display();
f3 = new FractionArithmetic();
f3.divFracts(f1, f2);
f3. display();
// main commands for testing second class FractionOperations
f1 = new Fraction(2,4);
f2 = new Fraction(4,6);
FractionOperations fract = new FractionOperations();
fract.multFracts(f1, f2);
fract.display();
fract.reduce();
fract.getFraction().displayFraction();
fract = new FractionOperations();
fract.divFracts(f1, f2);
fract.display();
fract.reduce();
fract.getFraction().displayFraction();
}
Fraction(int n, int d)
{
numerator = n;
denominator = d;
}
public int getNum()
{
return numerator;
}
public int getDen()
{
return denominator;
}
public void alterFraction(int n, int d)
{
numerator = n;
denominator = d;
}
public void displayFraction()
{
System.out.println("Fractioni = " + numerator + "/" + denominator);
}
}
class FractionArithmetic
{
protected Fraction fraction;
FractionArithmetic()
{
fraction = new Fraction(0, 1);
}
FractionArithmetic(int n, int d)
{
fraction = new Fraction(n, d);
}
public void multFracts(Fraction a, Fraction b)
{
// System.out.println(a.getNum() + " " + a.getDen() + " " + b.getNum() + " " + b.getDen());
fraction.alterFraction(a.getNum() * b.getNum(), a.getDen() * b.getDen());
}
public void divFracts(Fraction a, Fraction b)
{
fraction.alterFraction(a.getNum() * b.getDen(), a.getDen() * b.getNum());
}
public void display()
{
System.out.println("This is an unreduced fraction");
fraction.displayFraction();
}
public Fraction getFraction()
{
return fraction;
}
}
class FractionOperations extends FractionArithmetic
{
Fraction reducedFraction;
FractionOperations()
{
reducedFraction = new Fraction(0, 1);
}
FractionOperations(int n, int d)
{
super(n, d);
reducedFraction = new Fraction(n, d);
}
public void reduce()
{
int gcf = getGCF(reducedFraction.numerator, reducedFraction.denominator);
fraction.alterFraction(reducedFraction.numerator / gcf, reducedFraction.denominator / gcf);
}
private static int getGCF(int a, int b)
{
int gcf = 1;
a = Math.abs(a);
b = Math.abs(b);
if(a > b)
{
int dummy = b;
b = a;
a = dummy;
}
for(int i = 1; i <= b; i++)
{
if(b % i == 0 && a % i == 0)
gcf = i;
}
return gcf;
}
public void display()
{
reducedFraction.displayFraction();
fraction.displayFraction();
}
public Fraction getFraction()
{
return reducedFraction;
}
}
fraction1的分子是2
fraction1的分母是4
Fractioni = 2/4
Fractioni = 3/6
Fractioni = 0/1
这是一个未减少的分数
Fractioni = 0/0
Fractioni = 0/1
Fractioni = 0/1
Fractioni = 0/1
Fractioni = 0/0
Fractioni = 0/0
Fractioni = 0/0
答案 0 :(得分:0)
也许,这是因为你的课程使得它将2/4除以3/6。我认为编程使用2/4这样的数字,而不是单独使用数字,只会产生1和0之类的数字。