2015-03-02 66 views
1

我有我的分數程序運行平穩,但在NetBeans IDE告訴我下面的if是多餘的:冗餘如果消息

public boolean equals(Object other) 
{ 
    Fraction bool = (Fraction) other; 

    if(this.numerator == bool.numerator && this.denominator == bool.denominator) 
    { 
    return true; 
    } 
    else return false;  
} 

上面的代碼編譯/完美運行,並且通過了所有的測試案例,但多餘的標誌通過NetBeans真的困擾着我。我將reduceToLowestTerms()添加到我的代碼中,並且該標誌消失,但我的構造函數中已有reduceToLowestTerms()。這是(根據於NetBeans)非冗餘的代碼如下所示:

public boolean equals(Object other) 
{ 
     Fraction bool = (Fraction) other; 

     if(this.numerator == bool.numerator && this.denominator == bool.denominator) 
     { 
     bool.reduceToLowestTerms(); 
     this.reduceToLowestTerms(); 
     return true; 
     } 
     else return false;  
    } 

任何建議,將不勝感激

+0

你確定這是說'如果'是多餘的,而不是'else'? – DaveH 2015-03-02 23:06:46

+0

'reduceToLowestTerms()'做了什麼?我能找到的唯一'Fraction'類是在apache common-lang中,它沒有這個方法,所以我假設這是你寫的一些自定義分數類? – azurefrog 2015-03-02 23:08:01

+0

你可以發佈分數類嗎? – libik 2015-03-02 23:09:17

回答

8

這似乎類似於警告我的IDE給出了這樣的說法:

'如果' 語句可以簡化

if(foo()) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 

可以簡化爲

return foo(); 

這只是過於複雜和冗長的代碼。您的簡化將是:

return this.numerator == bool.numerator && this.denominator == bool.denominator; 

但正如您已經注意到的,您的代碼已經是正確的。沒有必要進行這種更改,但它會使代碼更簡潔,更簡化。

將呼叫添加到另一個方法(reduceToLowestTerms())中刪除此「標誌」的原因是,代碼不能再簡單地用這種方式簡化爲單個return語句。