2017-02-01 6 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 где вы 'тест' класс и' основной' метод. –

ответ

1

Вы должны возвращать Rational (а не аннулируются) в методе плюс.

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

Как бы я взял два параметра и какой метод я бы сделал? – JustAJAVAGUY

+0

Сделайте это для метода плюс. Это будет выглядеть так. Вы должны создать эти методы geNum() и getDenom в своем классе Rational. Сделал бы ваш код еще более чистым, чтобы поместить все ваши математические функции в отдельный класс. –

+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

Смежные вопросы