Количество дней в году

  • 8
  • Недоступна
На планете Земля год длится 365 или 366 суток. Количество дней высчитывается по определенной формуле: високосным годом (366 суток) является год, который делится без остатка на 4 за исключением годов, которые кратны 100 и не кратны 400. Напишем программу, в которой выясним, високосный или обычный год ввёл пользователь с клавиатуры.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (457)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Никитин
Уровень 5, Казань
18 октября, 20:40
Весь мозг сломал, пока понял, что в условии написано! "2) в оставшихся годах после этого" В каких оставшихся годах?? Решение простое, как 5 копеек, а условие капец мутное!
Alex Dexterev
Уровень 5
30 сентября, 14:48
проблема с тем, что тут с изначальной подачей условий напартачили, чтоб вы моск себе поломали, нашел адекватные параметры условий вычисления высокостного года на wikihow.
Yodzimura
Уровень 4, Москва, Россия
9 октября, 21:19
+100500, условие не совсем корректно описано.
Иван
Уровень 8, Новосибирск
3 августа, 18:58
Проблема была с тем, что могут быть исключения, которые на все делятся и на 400 и на 100 и на 4 с остатком (2002), провозился кучу времени с этим.
Denis Vakulenko
Уровень 4, Новосибирск, Россия
16 июля, 03:28
if (n % 400 == 0 || n % 4 == 0) System.out.println("Високостный год"); else System.out.println("Не Високостный год");очему такое решение не правильное?в идеи решаю все получается
Иван
Уровень 8, Новосибирск
3 августа, 18:45
Если вдруг не нашел проблему 2100%4 без остатка, а он является не високосным
Щербаков Артем
Уровень 5
6 августа, 06:59
да, но ведь 2100%400 с остатком ?!
Иван
Уровень 8, Новосибирск
12 августа, 13:42
ну все правильно "если год делится без остатка на 400 это високосный год;", подтверждает что не является високосным
Semen QA Engineer в Vitalerter
9 октября, 10:45
Потому что есть, например, 2200 год. Делится без остатка и на 400, и на 4, но он не високосный, потому что в то же время делится без остатка и на 100.
Maksym QA Automation Engineer
29 мая, 06:14
можно ничего не делить и не считать (велосипед ведь давно изобретен). Советую использовать java.time.LocalDate ( LocalDate myDate = LocalDate.of(scan.nextInt(), 1, 1);) и его метод isLeapYear(), тогда получается решение в 3 строчки.
Дмитрий
Уровень 22, Нижний Новгород
1 июня, 14:28
Смысл задач не в результате решения задач, смысл задач в закрепление материала и поиска пробела в своих знаниях, вы своим комментарием дополнили мои знания и дали стимул почитать про класс который вы указали. В данной же задаче, я считаю, лучше использовать многоступенчатую конструкцию if-else-if, которая ранее в лекции объяснялась и почитать про операторы (ссылка из комментария ниже : https://javarush.ru/groups/posts/operatory-java-logicheskie-arifmeticheskie-pobitovye). Столкнулся с одной проблемой при решении: когда задаем условие для оператора if, то не забываем, что условия должны быть типа boolean и boolean и что есть большая разница в написании a % b = 0 и a % b == 0.
Дима
Уровень 13, Новая Каховка, Украина
20 мая, 18:52
Ребят, прежде чем садиться за решение задачки, вы должны знать про оператор "%". вот тут можно про него почитать https://javarush.ru/groups/posts/operatory-java-logicheskie-arifmeticheskie-pobitovye Так же надо знать что && - это "И" || - а это "ИЛИ" (я запомнил что || как тест на беременность, когда ты думаешь мальчик или девочка)) != - это не равно чему-то == - это равно (ну это вы наверно знали) Всё, с этим уже можно творить магию и ломать мозг с этой головоломкой)) Добавляйте если чё пропустил))
Александр
Уровень 5, Москва, Россия
13 мая, 14:32
Что-то затупил на данной задаче ( пошёл за подсказками )))
Ruslan
Уровень 17, Москва, Россия
9 мая, 13:58
Для меня так и осталось загадкой, почему 0200 год считается "Не високосным", при чём не только в этой задаче, но и на других сайтах с калькуляторами. Странная какая-то математика у них. Везде при чём написано, что каждый четвёртый, но если больше двух нулей - то делить на 400... Может это весь мир так договорился.
Дмитрий Сергеевич
Уровень 9, Москва, Россия
1 мая, 18:41
Объясните пожалуйста, почему у нас деление проходит через %, а не через /? if(nYear%400==0 & nYear%100==0) else if (nYear%4==0 & nYear%100!=0) Вот по этим системе? Не могу понять.
Ingener
Уровень 15
12 мая, 01:28
10 / 3 = 3.3333333 - это деление 10 % 3 = 1 - это остаток от деления
Kjao13
Уровень 7, Киев, Украина
31 марта, 08:03
Я довго вирішувала завдання, перечитала всі ваші способи і дійшла до свого найпростішого: BufferedReader reader = new BufferedReader (new InputStreamReader(System.in)); String s = reader.readLine(); int year = Integer.parseInt(s); if (year%400==0) {System.out.println("количество дней в году:" + " 366");} else if (year%100==0) {System.out.println("количество дней в году:" + " 365");} else if (year%4 ==00) {System.out.println("количество дней в году:" + " 366");} else {System.out.println("количество дней в году:" + " 365");}
Artemiy Kostarev
Уровень 4, Киев, Украина
8 мая, 10:38
А навіщо ще одні лапки в середині System.out.println? Можно просто
else
            System.out.println("количество дней в году: 365");
Андрей Бугаев
Уровень 25
6 июля, 12:24
пока не увидел последовательность в Вашем решении, не мог понять почему задача не хочет решаться.
BATMAH
Уровень 10, Днепр , Украина
30 июля, 06:20
написал подобный код, но идеа ругается что
if (year % 400 == 0) {
переменная
year
должна быть типа boolean, а не int, поэтому я сделал вот так
String s = reader.readLine();
        boolean year= Boolean.parseBoolean(s);
        if (year % 400) {
            System.out.println("1");
Но ошибка никуда не ушла, в чем может быть причина?