Истинное значение возвращается вызывающей стороне, даже без указания любого возвращаемого значения в операторе возврата - PullRequest
1 голос
/ 30 марта 2020
public class FlourPacker {

    public static boolean canPack(int bigCount, int smallCount, int goal) {

        if ((bigCount < 0 || smallCount < 0 || goal < 0))
            return false;

            if ((bigCount * 5) < goal)
                return ((goal - (bigCount * 5)) <= smallCount);

             else return ((goal % 5)<= smallCount);

        }

    public static void main(String []args){
            System.out.println(canPack(3,0,11));
        }

}    

Так что в этой задаче bigCount стоит 5, а smallCount стоит 1, и я должен попытаться получить номер цели. Я не могу go закончить (цель) с bigCount, но я могу с smallCount.

Но мой вопрос, как получится в последнем if и else заявление Мне не нужно ставить true или false для возврата? когда я запускаю его (ie. основной метод, который я создал), он говорит мне true, хотя я никогда не вставляю return true в код.

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

Вам не нужно указывать true или false специально. Если вы это сделали, то все ваши операторы if должны были бы быть if (true) или if (false).

Таким образом, вместо этого вы пишете выражение внутри оператора if, которое оценивается как true или false (Принимая ваш пример, if ((bigCount * 5) < goal) будет эквивалентно в if (true) или if (false) после подключения значений из переменных).

Эта же идея относится и к операторам возврата (return ((goal % 5)<= smallCount) станет return true или return false).

0 голосов
/ 30 марта 2020

как получилось, что в последнем операторе if и else мне не нужно указывать true или false для возврата?

Ответ таков, что вы возвращаете результат операция сравнения с использованием реляционных операций . Всегда операция сравнения будет возвращать true или false (логические значения).

Например, когда: (goal - (bigCount * 5)) <= smallCount); оценивается, его вывод всегда будет логическим значением (истина или ложь !!!). Соответствующий оператор возврата вернет его вызывающей стороне (здесь это оператор печати). Он будет отображаться на вашей консоли.

Ссылка: Операторы отношений

...