簡體   English   中英

測試班要使用的主要方法

[英]Main Method to be used by Test Class

嗨,我有我的主類,但是我在弄清楚如何從測試類中輸出代碼時遇到麻煩。 盡管嘗試了很多方法如何輸出兩個分數的簡單加減,但我還是不理解,就像我的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;
    }       
}
   }

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

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

作為建議,我將所有這些運算符方法設為靜態,並也接受2個參數。 然后,您將對兩個有理數的分子和分母分別使用“獲取器”。

像這樣:

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);
}

嘗試將以下代碼作為測試類。

示例代碼測試課程

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM