2017-02-01 108 views
0

嗨,所以我有我的主要類,但即時通信困難搞清楚如何從我的測試類輸出我的代碼。我不明白,即使嘗試了很多方法如何輸出簡單的加法和減法的兩個部分,因爲它應該在我的主要方法中做,但似乎無法將其納入我的測試類。測試類使用的主要方法

這裏是我的所有功能的類代碼:

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; 
    }  
} 
    } 
+0

所以這裏是主要的方法是什麼?我看不到它。 – msagala25

+0

你的考試班在哪裏? –

+0

@justAJAVAGUY你在哪裏'test'類和'main'方法。 –

回答

1

您需要在您的加方法返回一個合理(而不是無效)。

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

作爲一個建議,我會讓所有這些運算符方法都是靜態的,並且也帶入2個參數。然後你會爲兩個有理數的分子和分母使用「getters」。

像這樣:

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

我將如何採取兩個參數,我會做那種方法? – JustAJAVAGUY

+0

用於加法。它看起來像上面那樣。你必須在你的Rational類中創建geNum()和getDenom方法。將使你的代碼更清潔,把你所有的數學函數放在一個單獨的類中。 –

+0

謝謝你的幫助:) – JustAJAVAGUY

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 
+0

感謝您的幫助:) – JustAJAVAGUY

相關問題