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

}

次に、有効な場合に評価をaRatingに設定するメソッドsetRating(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)を2回オーバーロードできないと表示されるため、エラーが発生し続けます。しかし、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 に答える