分数计划不起作用

时间:2015-01-11 01:47:19

标签: java

我正在为学校编写一个程序,用分数进行乘法和除法。当我运行当前代码时,将分数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

1 个答案:

答案 0 :(得分:0)

也许,这是因为你的课程使得它将2/4除以3/6。我认为编程使用2/4这样的数字,而不是单独使用数字,只会产生1和0之类的数字。