Как написать приватный метод, который возвращает True для определенных пераматеров? - PullRequest
0 голосов
/ 01 ноября 2011

Таким образом, точная формулировка такова: «Напишите приватный метод isValid (aRating), который возвращает true, если заданный рейтинг действителен, то есть между 1-10».

private void isValid(aRating)
{

}

Что происходит в вышеприведенном методе для того, чтобы вернуть истинное значение, если данный рейтинг действителен, действительность означает число 1-10.

Это то, что я пытался, инструкторхочет, чтобы это был "правильный путь". Это всего лишь пример того, что я пытался сделать. Это совершенно другая программа (игнорируйте, если запутываете).

private void isValid(int hour,  int minute) 
{
    if (hour >= 0 && hour <=23) 
    {
        System.out.println("Hour is valid");
        hourIsValid = true;
    } 

    else 
    {
        System.out.println("Hour is not valid");
        hourIsValid = false;
        System.exit(0);
    }
}

Было бы это правильно

    private boolean isValid(int aRating)
{                     
     if (aRating >= 1 && aRating <= 10)
         return true;
     else
         return false;
}

Ответы [ 3 ]

3 голосов
/ 01 ноября 2011

Проблема требует функции, которая возвращает true при некоторых условиях, поэтому сигнатура не может быть

private void isValid(int aRating) {}

, для нее требуется тип возврата.Теперь тип true логический, поэтому сделайте его

private boolean isValid(int aRating) {
    return /* validity test here */;
}
2 голосов
/ 01 ноября 2011

Вызов частных методов

Вызов частного метода из открытого точно такой же, как и вызов любого другого метода:

public void doStuff() {
    System.out.println("Stuff done.");
}

private void doOtherStuff() {
    System.out.println("Other stuff done.");
}

public void showHowItWorks() {
    doStuff();
    doOtherStuff();

    // or if you prefer this style:
    this.doStuff();
    this.doOtherStuff();
}

Важное отличие состоит в том, что вы можете вызывать только закрытые методыиз класса, в котором они были определены:

class PublicExample {
    public static void doStuff() {
        System.out.println("Stuff done.");
    }
}

class PrivateExample {
    private static void doStuff() {
        System.out.println("Stuff done.");
    }
}

class Example {
    public static void Main(String[] args) {
        PublicExample.doStuff(); // Works
        PrivateExample.doStuff(); // Doesn't work (because it's private and defined in a different class)
    }
}

Возвращаемые значения

private void isValid(int hour,  int minute) {
    if (hour >= 0 && hour <=23) {
        System.out.println("Hour is valid");
        hourIsValid = true;
    } else {
        System.out.println("Hour is not valid");
        hourIsValid = false;
        System.exit(0);
    }
}

Проблема с этим подходом заключается в том, что ваша программа немедленно умирает, если вы ввели неверный час или минуту.Что если я захочу выполнить цикл, пока не получу хороший ввод?

Я думаю, что главная проблема в том, что вы не знаете, как вернуть значение из метода .Вот пример функции, которая всегда возвращает true:

public static boolean trueExample() {
    return true;
}

public static void main(String[] args) {
    boolean returnValue = trueExample();
    System.out.println("trueExample() returned " + returnValue);
}

Вы также можете сделать ее более сложной:

/**
 * @return the input value minus one.
 */
public static int oneLess(int num) {
    return num - 1;
}

public static void main(String[] args) {
    int num = 10;

    // Print 10
    System.out.println(num);

    // Print 9
    num = oneLess(num);
    System.out.println(num);

    // Print 8
    num = oneLess(num);
    System.out.println(num);
}

Вот та, которая будет возвращать true, если num находится в диапазоне 10-20 и false в противном случае:

public boolean isValid(int num) {
    return num >= 10 && num <= 20;
}

Эта версия точно делает то же самое, но вам может быть легче читать, так как она более явная:

public boolean isValid(int num) {
    /* Numbers less than 10 are invalid */
    if(num < 10) {
        return false;
    }
    /* Numbers greater than 20 are invalid */
    else if (num > 20) {
        return false;
    }
    /* By process of elimination, everything else is valid */
    else {
        return true;
    }
}

Дайте мне знать, если этого недостаточно, чтобы помочь вам с вашей проблемой.

0 голосов
/ 01 ноября 2011

Точно так же, как вы вызываете любой обычный метод, пока закрытый метод виден общедоступному методу.

...