Как я могу использовать приватный метод в публичном методе для проверки действительности? - PullRequest
1 голос
/ 01 ноября 2011
    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, если он действителен.Поэтому я предполагаю, что мне нужно использовать метод, описанный выше, в публичном методе, чтобы проверить, является ли он действительным.Если это действительно так, мне нужно установить рейтинг = 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();
}

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011
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 голосов
/ 01 ноября 2011

Вы также должны передать аргумент 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).

...