2017-10-18 76 views
0

我正在學習如何編寫代碼,並遇到了我的類方法和測試這些方法的麻煩。這裏是問題:類方法的問題和測試這些方法?

在這個實驗中,我們將創建一個Fraction類。這個類用來表示兩個整數的比例。 FractionDriver類的主要方法將包含測試您的Fraction類的代碼。我建議你增量測試你的Fraction類。

您的Fraction類應該有兩個私有整數實例變量分子和分母。最初,分子的值應該是0,分母的值應該是1.

寫出兩個增變器方法,setNumerator()setDenominator(),允許用戶將分子和分母設置爲整數值。您的代碼不應允許分母設置爲0.如果用戶嘗試將分母設置爲0,則不應更改該值。

另外,還包含一個名爲getValue()的方法,該方法返回分子除以分母的值作爲雙精度值。

添加一個toString()方法,該方法返回分子/分母(例如5/3)形式的分數的String表示形式。

最後,添加一個equals方法,該方法確定兩個Fraction類型的對象是否相等。請注意,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的結果,我不知道什麼我在我的班級方法中做錯了。 另外,如何測試我的等號方法?

+3

提示:你將整數。什麼是整數的1/2? – crumbug

+0

薩曼莎,我只想說測試你的代碼的好工作。測試是非常重要的,保持良好的工作。確保你測試所謂的「邊緣情況」以及負值,零等。另外,考慮創建可以保持和反覆運行的測試。如果你雄心勃勃,你可以看一下[Junit](http://junit.org),但是如果對你來說太高級了,也許只是爲每個測試創建一個方法,並且每個方法都會拋出一些異常測試失敗。然後你只需運行你所有的方法。 –

回答

-2

你的方法來獲取值是無效的......所以這是你的問題。 應該

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

不過還好,使其

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

這當然是非常規的,但這不是問題。 「getter」打印該行。 – user1675642