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. Проверяем переменную и в завивимости от ее значения выводим высокосность года.
/* Количество дней в году
Ввести с клавиатуры год, определить количество дней в году. Результат вывести на экран в следующем виде:
"количество дней в году: 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. Проверяем переменную и в завивимости от ее значения выводим высокосность года.
Можно и ото обратного пойти написать условия при котором проверяются не високосные года, все остальное високосные
ОтветитьУдалить- Вроде компактнее
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("Этот год високосный");
}
}
В твоем варианте при вводе любого года, который кратен одновременно 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");
}