if (number % 4 == 0 | number % 400 == 0){
System.out.println("количество дней в году: " + 366);
}
else if (number % 100 == 0 | number % 4 !=0)
System.out.println("количество дней в году: " + 365);ZloyKomar
5 уровень
Не могу вдуплить почему года не делящиися на 400 попадают в первое условие
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
22 января 2023, 22:16
1. Логическое ИЛИ - это ||. Один пайп - это побитовая операция, которая иногда выдаёт такой же результат, а иногда нет.
2. в условии number % 4 == 0 || number % 400 == 0 вторая часть избыточна, потому что всё, что делится на 400, делится и на 4 тоже, и это проверяется первой частью. Поэтому в первое условие у тебя попадает всё, что делится на 4, и 396, и 400, и 404.
0
ГоффMaster
22 января 2023, 22:20
Второй иф - аналогично. В него попадут все числа, которые не делятся на 4 или делятся на 100. Это будут и 99, и 100, и 101
0
ГоффMaster
22 января 2023, 22:24
А, ну нам это и надо, торможу, совет снимается, всё ОК кроме ||
0
ZloyKomar
22 января 2023, 22:12
Понял, они деляться на 4 без остатка
+1