当前位置: 代码迷 >> J2SE >> java基础小疑点
  详细解决方案

java基础小疑点

热度:9   发布时间:2016-04-24 00:33:05.0
java基础小问题
我有个需求 想输出"1/8";
Java code
    public static void main(String[] args) {        // TODO Auto-generated method stub        Fraction f1=new Fraction(1,4);            Fraction f2=new Fraction(1,2);        f1.multiplyy(f2);        System.out.println(f1);    }

帮我实现下 这个类Fraction;
谢谢了。。。坐等答案啊

------解决方案--------------------
探讨
我有个需求 想输出"1/8";
Java code
public static void main(String[] args) {
// TODO Auto-generated method stub
Fraction f1=new Fraction(1,4);
Fraction f2=new Fraction(1,2);
……

------解决方案--------------------
你不是要打印1/8吗
Fraction f1=Fraction.getFraction(1, 4);
Fraction f2=Fraction.getFraction(1, 2);
Fraction math=f1.multiplyBy(f2);
System.out.println(math);

------解决方案--------------------
自己写了一个.
Java code
package csdn.calculate;public class TestFraction{     public static void main(String[] args)           {        // TODO Auto-generated method stub            Fraction f1=new Fraction(14,21);                Fraction f2=new Fraction(20,-30);            Fraction f3;        f3=f1.plus(f2);            System.out.println(f1+"+ "+f2+"= "+f3);        f3=f1.minus(f2);            System.out.println(f1+"- "+f2+"= "+f3);        f3=f1.multiply(f2);            System.out.println(f1+"* "+f2+"= "+f3);        f3=f1.divide(f2);            System.out.println(f1+"/ "+f2+"= "+f3);        }}class Fraction{    private int c;    private int d;    public Fraction()                    //默认构造函数,分子分母都为1。    {        c=1;        d=1;    }    public Fraction(int a,int b)                //带参数构造函数,判断分母是否为0。    {        if(b==0)        {            System.out.println("分母 不能为0!");            System.exit(0);        }        c=a;        d=b;        selfTrim();    }    public int getNumerator()    {        return c;    }    public int getDinominator()    {        return d;    }    public void selfTrim()    {        int maxCommon=commonDivisor(c,d);        //求出两个数的最大公约数。        c=c/maxCommon;                    //分式为最简。        d=d/maxCommon;        //整理正负号。        if((c>0&&d<0)||(c<0&&d<0))        {            c=-c;            d=-d;        }    }    public String toString()                        //重写tostring().    {        if(c==0||d==1)                            //分母为1 直接输出分子.        {            return Integer.toString(c);        }        return Integer.toString(c)+"/"+Integer.toString(d);        //输出c/d.    }    //----- plus    public Fraction minus(Fraction f2)    {        int newNumerator=c*f2.getDinominator()-d*f2.getNumerator();        int newDinominator=d*f2.getDinominator();        int maxCommon=commonDivisor(newNumerator,newDinominator);        return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);    }    //---- minus    public Fraction plus(Fraction f2)    {        int newNumerator=c*f2.getDinominator()+d*f2.getNumerator();        int newDinominator=d*f2.getDinominator();        int maxCommon=commonDivisor(newNumerator,newDinominator);        return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);    }    //----- mutiply    public  Fraction multiply(Fraction f2)                    //两个分数相乘。    {        int newNumerator=c*f2.getNumerator();        int newDinominator=d*f2.getDinominator();        int maxCommon=commonDivisor(newNumerator,newDinominator);        return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);    }        //-----  divide    public Fraction divide(Fraction f2)    {        if(f2.getNumerator()==0)        {            System.out.println("0不能做除数!");            System.exit(0);        }        Fraction result=new Fraction();        int newNumerator=c*f2.getDinominator();        int newDinominator=d*f2.getNumerator();        int maxCommon=commonDivisor(newNumerator,newDinominator);        return new Fraction(newNumerator/maxCommon,newDinominator/maxCommon);    }    //计算2个数的最大公约数。按绝对值计算。    public static  int commonDivisor(int x,int y)        //计算2个数的最大公约数。按绝对值计算。    {        if(x==0||y==0)        {            return 1;        }        int x1;                        int y1;        x1=(Math.abs(x)>Math.abs(y))?Math.abs(x):Math.abs(y);                //使x1>y1.        y1=(Math.abs(x)>Math.abs(y))?Math.abs(y):Math.abs(x);        int z=1;            while(z!=0)             {            z=x1%y1;                 x1=y1;                 y1=z;             }         return x1;    }}
  相关解决方案