2011-11-01 64 views
1
private boolean isValid(int aRating) 
{      

    return aRating >= 1 && aRating <= 10; 

} 

       or 

    private boolean isValid(int aRating) 
{      

    if (aRating >=1 && aRating <=100 
     return true; 
    else 
     return false 

} 

我現在需要編寫一個方法setRating(aRating),將等級設置爲aRating,如果它有效。所以我假設我需要在公共方法中使用上面的方法來檢查它是否有效。如果有效,我需要將rating =設置爲aRating。到目前爲止我的想法一直是這樣的:如何在公共方法中使用私有方法來檢查有效性?

public void setRating(int aRating) 
{ 
    if (isValid() == true) 
     rating = aRating; 

} 

但我不能使用isValid作爲==爲真,因爲它是一種方法。我也嘗試使用isValid();爲了僅嘗試和使用該方法,但由於頂部的(int aRating)而不允許。如果我沒有識別它,然後不會讓我在所有使用aRating ...

現在,它是

public void setRating(int aRating) 
    { 
     if (isValid(aRating)) 
      rating = aRating; 
    } 

我需要做一個setRating()方法,它允許用戶輸入從鍵盤的東西,再次它必須是有效的,我不斷收到錯誤,因爲它說我不能重載SetRating(int aRating)兩次,我明白。但是,如果我嘗試將int部分取出,它是無效的,因爲它需要一個參數。這是我所

public void setRating() 
{ 
    Scanner keyboard = new Scanner(System.in); 
    if (isValid(aRating)) 
     rating = keyboard.nextInt(); 
} 
+0

一般來說,提供一個'setRating'方法是一個好主意,它可以從鍵盤上交互地讀取。用戶界面的設計應該發生在程序的另一部分,並且只使用'setRating(int)'方法。這樣,您不必僅僅因爲老師告訴您將提示改爲「請輸入:」就可以更改每堂課的代碼。 –

+0

我一定是學習錯了,或者這本書真的很糟糕,因爲它特別要求制定兩套額定方法,一種是我在上面演示的Corey幫助我的。 setRating(aRating)很好,第二個setRating()需要「從鍵盤讀取評分,堅持用戶提供的評分有效」 – Renuz

+0

初學者的書和現實生活中的代碼有很大的區別。對於初學者來說,使代碼儘可能簡短和可讀性是很好的風格。沒關係,因爲代碼不必住在容易丟失概覽的大型系統中。但是,無論如何,你很可能會學到這一點。你現在的任務是從鍵盤讀取並驗證輸入,這本身就是非常有價值的。 –

回答

2
public void setRating(int aRating) 
{ 
    if (isValidRating(aRating)) 
     this.rating = aRating; 
} 

這可能不需要爲您的家庭作業,但在現實世界中,你可能還需要考慮,如果驗證失敗,拋出一個IllegalArgumentException。

實施例:

public void setRating(int aRating) 
{ 
    if (isValidRating(aRating)) 
     this.rating = aRating; 
    else 
     throw new IllegalArgumentException("Invalid rating."); 
} 
+0

我看到「throw new」是做什麼的,是否初始化IllegalArgumentException,我查看了那個,我想我知道現在的意思。 – Renuz

0

你必須通過aRating參數傳遞給isValid方法爲好。而不是隻跳過了錯誤的價值觀的任務,它往往是更好地拋出一個異常,如下所示:

public void setRating(int rating) { 
    checkRating(rating); 
    this.rating = rating; 
} 

private void checkRating(int rating) { 
    if (!(1 <= rating && rating <= 10)) { 
    throw new IllegalArgumentException("Invalid rating: " + rating); 
    } 
} 

參數檢查這種風格的使用流行類,如java.util.ArrayList,例如在get(int)方法。

相關問題