如何在公共方法中使用私有方法来检查有效性?

时间:2011-11-01 03:28:47

标签: java methods boolean private-methods

    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 IF它是否有效。所以我假设我需要在公共方法中使用上面的方法来检查它是否有效。如果它有效,那么我需要将rating =设置为aRating。到目前为止,我的想法是:

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

}

但是我不能将isValid用作==到true,因为它是一种方法。我也尝试使用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();
}

2 个答案:

答案 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.");
}

答案 1 :(得分: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)方法。