среда, 23 ноября 2016 г.

level04.lesson04.task07

package com.javarush.test.level04.lesson04.task07;

/* Количество дней в году
Ввести с клавиатуры год, определить количество дней в году. Результат вывести на экран в следующем виде:
"количество дней в году: x", где х - 366 для високосными года, х - 365 для обычного года.
Подсказка: В високосном году - 366 дней, тогда как в обычном  - 365.
Високосным годом является каждый четвёртый год, за исключением столетий, которые не кратны 400.
Так, годы 1700, 1800 и 1900 не являются високосными, так как они кратны 100 и не кратны 400.
Годы 1600 и 2000 — високосные, так как они кратны 100 и кратны 400.
Годы 2100, 2200 и 2300 — невисокосные.
*/

import java.io.*;

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int i = Integer.parseInt(reader.readLine());
        int a = 0;
        if ((i % 4)== 0)
        {
            a = 1;
            if(((i % 100)==0) &&(i % 400) != 0)
            a = 0;
            if (a == 1)
                System.out.println("количество дней в году: 366");

        }
        if (a != 1)
            System.out.println("количество дней в году: 365");


    }
}

Объяснение : вводим переменную для идентификации высокосного года. Проверяем кратный ли год 4. Если кратный четырем то дальше проверяем чтобы был кратным 100 но не кратным 400. Проверяем переменную и в завивимости от ее значения выводим высокосность года.

2 комментария:

  1. Можно и ото обратного пойти написать условия при котором проверяются не високосные года, все остальное високосные
    - Вроде компактнее

    public static void main(String[] args) throws Exception {

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Введите год");
    int a = Integer.parseInt(reader.readLine());
    if ((a % 100 == 0) || (a % 400 == 1) || (a % 4 == 1)) {
    System.out.println("Не високосный");
    } else System.out.println("Этот год високосный");
    }
    }

    ОтветитьУдалить
    Ответы
    1. В твоем варианте при вводе любого года, который кратен одновременно 100 и 400 будет не високосным, хотя они високосные. Так как для них будет выполняться первое условие всегда, а значит сработает код после if, то есть укажет, что год не високосный.
      Вот мой вариант: public static void main(String[] args) throws Exception {
      BufferedReader reader = new BufferedReader(new InputStreamReader (System.in));
      System.out.println("Input number of year:");
      int i = Integer.parseInt(reader.readLine());
      int a= 0;
      if(i%4 ==0)
      {
      if ((i%400==0)&&(i%100==0))
      System.out.println("количество дней в году: 366");
      else System.out.println("\"количество дней в году: 365");
      }
      else System.out.println("\"количество дней в году: 365");

      }

      Удалить