2017-10-18 13 views
0

コード作成の方法を学習していますが、クラスメソッドに問題があり、これらのメソッドをテストしています。ここに問題があります:クラスメソッドに問題があり、これらのメソッドをテストしていますか?

このラボでは、Fractionクラスを作成します。このクラスは、2つの整数の比率を表すために使用されます。 FractionDriverクラスのmainメソッドには、Fractionクラスをテストするコードが含まれます。 Fractionクラスを段階的にテストすることをお勧めします。

Fractionクラスには、2つのプライベート整数インスタンス変数、numeratorとdenominatorが必要です。最初にnumeratorの値は0で、分母の値は1でなければなりません。

2つのミューテータメソッドsetNumerator()setDenominator()を書きます。これにより、分子と分母を整数値に設定できます。コードで分母を0に設定しないでください。ユーザーが分母を0に設定しようとすると、値を変更しないでください。

また、分子の値を分母で割った値をdoubleとして返すメソッドgetValue()を含めます。

Stringの式を分子/分母の形式で返します(例:5/3)。

最後に、Fraction型の2つのオブジェクトが等しいかどうかを判断するequalsメソッドを追加します。 3/5と6/10は等しいとみなされるべきであることに注意してください。ここで

は私の分数クラスの私のコードです:ここでは

public class Fraction { 

private int numerator = 0; 
private int denominator = 1; 
private double divide; 
//setting numerator and denominator 
public void setNumerator(int numerator) { 
    this.numerator = numerator; 
} 
public void setDenominator(int denominator) { 
    if (denominator == 0) { 
     return; 
    } 
    this.denominator = denominator; 
} 

//returning value of the numerator divided by a denominator as a double 
public void getValue() { 
    divide = numerator/denominator; 
    this.divide = divide; 
    System.out.println("The value of this fraction in decimal form is: " + divide); 
} 
//returning the fraction as a string #/# 
public String toString() { 
    return "Your fraction is: " + numerator + "/" + denominator; 
} 
public boolean equals(Fraction other) { 
    if(other.divide == divide) { 
     return true; 
    } 
    return false; 
} 

}

は、これまで私のドライバーのためのコードです:

public class FractionDriver { 

public static void main(String[] args) { 
    Fraction fract1 = new Fraction(); 
    Fraction fract2 = new Fraction(); 

    //initialize variables 
    fract1.setNumerator(1); 
    fract1.setDenominator(2); 
    fract2.setNumerator(5); 
    fract2.setDenominator(10); 

    for(int i = 0; i < 1; i++) { 
     //testing toString method 
     System.out.println(fract1.toString()); 
     System.out.println(fract2.toString()); 
     fract1.getValue(); 
     fract2.getValue(); 

    } 
} 

}

私がテストしたとき両方の分数の私のgetValue()メソッドは、それぞれ0.0の結果を持っています。私はクラスメソッドで間違っています。 また、equalsメソッドをテストするにはどうすればよいですか?

+3

ヒントにする

//returning value of the numerator divided by a denominator as a double public double getValue() { divide = numerator/denominator; this.divide = divide; return this.divide; } 

しかし、良いはずです。整数の1/2は何ですか? – crumbug

+0

Samantha、私はあなたのコードをテストする素晴らしい仕事をしたかっただけです。テストは非常に重要です、良い仕事を続けてください。負の値やゼロなどのいわゆる「エッジケース」もテストするようにしてください。何度も繰り返して実行できるテストを作成することを検討してください。もしあなたが野心的なら、あなたは[Junit](http://junit.org)を見ることができるかもしれませんが、それがあまりにも進んでいるならば、おそらく各テストのためのメソッドを作成し、それぞれのメソッドは何らかの例外をスローしますテストは失敗します。次に、すべてのメソッドを実行します。 –

答えて

-2

あなたの方法は、値がVOIDで取得するにはを参照してください得ることはありません。あなたはint型を分割している: それは

public double getValue() { 
    return numerator/denominator; 
} 
+1

それは確かに異例のことですが、それは問題ではありません。 "getter"は行を出力します。 – user1675642

関連する問題