测试类使用的主要方法

时间:2017-02-01 03:32:43

标签: java object testing methods main

嗨,所以我有我的主课,但我很难搞清楚如何从我的测试类输出我的代码。我不明白,尽管尝试了很多方法如何输出两个分数的简单加法和减法,因为它应该在我的主方法中做,但似乎无法将它带入我的测试类。

这是我的代码,包含所有函数:

package rational;

 public class Rational {

private int numer, denom;

 //constructors
    public Rational(){
        int num = 1;
        int den = 2;
        reduce();
    }
    public Rational(int num, int den){
    numer = num;
    denom = den;
    reduce();
    }
    public Rational(Rational x){
    numer = x.numer;
    denom = x.denom;
    reduce();
    }

   //setters
    public void setNumer(int num){
    numer = num;
    reduce();
    }
    public void setDenom(int den){
    denom = den;
    reduce();
    }
    public void setRational(int num, int den){
    numer = num;
    denom = den;
    reduce();
    }

     //getters
    public int getNumer(){
    return numer;
    }
    public int getDenom(){
    return denom;
    }

    //Copy method
    public void copyFrom(Rational x){
    numer = x.numer;
    denom = x.denom;
    reduce();
    }

    //Equals method        
    public boolean equals(Rational x){
    if (numer / denom == x.numer / x.denom){
    return(true);
            }
    else {
    return(false);
        }
    }

    //Compare to method
    public int compareTo(Rational x){
    if (numer / denom == x.numer / x.denom){
    return (0);
    }
    else if (numer / denom < x.numer / x.denom){
    return (-1);
    }
    else{
    return (1);
        }    
    }

    //Find greatest common divisor
    static int gcd(int x, int y){
    int r;
    while (y != 0) {
    r = x % y;
    x = y;
    y = r;
        }
    return x;
    }

    //Rational Addition            
    public void plus(Rational x){
    int greatdenom = x.denom * denom;       
    int multx = greatdenom / x.denom;
    int mult = greatdenom / denom;
    denom = x.denom * denom;
    numer = (x.numer * multx) + (numer * mult);
    reduce();
    }

    //Rational Subtraction
    public void minus(Rational x){
    int greatdenom = x.denom * denom;       
    int multx = greatdenom / x.denom;
    int mult = greatdenom / denom;
    denom = x.denom * denom;
    if (x.numer > numer){
    numer = (x.numer * multx) - (numer * mult);
        }
    else {
    numer = (numer * mult) - (x.numer * multx);
        }
    reduce();
    }

     //Multiplication       
    public void times(Rational x){
    numer = numer * x.numer;
    denom = denom * x.denom;
    reduce();
    }

    //Division        
    public void divBy(Rational x){
    numer = numer / x.numer;
    denom = denom / x.denom;
    reduce();
    }

     //Fraction simplifier        
    private void reduce(){
    int divisor;
    divisor = Rational.gcd(numer, denom);
    numer = numer / divisor;
    denom = denom / divisor;
    }

@Override
    public String toString(){
    if (denom == 1){
    return numer + "";
    }
    else{
    return numer + " / " + denom;
    }       
}
   }

2 个答案:

答案 0 :(得分:1)

您需要在plus方法中返回Rational(而不是void)。

public Rational plus(Rational x){
   //do addition stuff.
    return new Rational(//what numerator be//,//what denom should be//)
    }

作为建议,我会将所有这些操作符方法设置为静态,并且也接受2个参数。然后你会使用&#34; getters&#34;对于两个有理数中的每一个&#39;分子和分母。

像这样:

public static Rational plus(Rational r1, Rational r2) {
    int r1Num=r1.getNum();
    int r1Denom=r1.getDenom();
    int r2Num=r2.getNum();
    int r2Denom=r2.getDenom();
    //do all your plus stuff
    return new Rational(//new num, //new denom);
}

答案 1 :(得分:0)

尝试将代码作为测试类。

示例代码测试类

public class TestRational
{
  public static void main(String[] args)
  {
    Rational rational= new Rational(2,3);
    rational.plus(rational);
    System.out.print(rational.toString());
  }
}

输出

4 / 3