public class Market {
private static boolean hasEggs = true; // зачем здесь это, если по итогу оно не используется?
public static void main(String[] args) {
boolean hasEggs = false;
makePurchases(hasEggs);
}
public static void makePurchases(boolean hasEggs) {
if (hasEggs) { // КАК Я ПОНИМАЮ: если false , то высвечивается ("Купил 10 батонов"). Выше boolean hasEggs = false, значит здесь false
System.out.println("Купил 10 батонов");
} else {
System.out.println("Купил 1 батон"); // Но на деле в консоль выходит это, значит это false, а выше true. Why?
}
}
Serafima Tatchenkova
11 уровень
хелп
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Wladyslaw Java Developer Master
25 августа 2021, 17:28
код внутри блока if выполниться только тогда когда выражение внутри круглых скобок после вычисления будет равно true. У тебя параметром пришло сразу булевое значение, которое равно false, вычислять ничего не нужно. Т.к. оно - false, код внутри блока не выполняеться, выполняеться блок else т.к. он есть.
Статическое поле для того чтобы показать что такое variable shadowing, наверное.
А откуда этот код?
0
Serafima Tatchenkova
25 августа 2021, 18:05
это целиком код задачи, мне ее не выложить тк она уже решена. там вроде выше можно перейти к условию задачи.
Так а почему выводится в консоль КУПИЛ 1 БАТОН?...почему КУПИЛ 10 БАТОНОВ - true , а КУПИЛ 1 БАТОН - false?
0
Wladyslaw Java Developer Master
25 августа 2021, 19:02
Потому что так работает if.
Ты передала в метод false.
if, у которого условие false-ное не отрабатывает.
если false , то высвечивается ("Купил 10 батонов")
С чего ты такое взяла?
Блок кода отработает только тогда, когда выражение в скобка свродиться к true
К условию задачи я перейти не могу т.к. подписки нет
0