2011-11-01 98 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)方法。

相关问题