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 用作 == 到 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();
}
4

2 回答 2

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.");
}
于 2011-11-01T03:30:19.420 回答
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)方法中。

于 2011-11-01T03:40:00.487 回答