Top.Mail.Ru
Ответы

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

Нужно написать программу, которая будет рассчитывать количество дней в году. Зачем это бывает нужно? Варианты бывают разные: например, для расчета продолжительности долгосрочных проектов в днях или чтобы узнать, сколько дней потребуется для космической экспедиции на Марс. Для расчета количества дней в году требуется знать несколько правил:

В високосном году 366 дней, в обычном 365.
Високосный год — это год, номер которого делится без остатка на 400 (например 2000 или 2400), либо делится на 4 но не делится на 100 (например 2008, 2096, но не 2100).

Чего не хватает в этом?
mport java.util.Scanner;
public class Main {
public static void main(String[] args) {
//напишите тут ваш код
Scanner scanner = new Scanner( System.in );
int year = scanner.nextInt();

if ((year %4 == 0 && year %100 !=0) | (year %400 == 0)){
System.out.println("количество дней в году: 366");
}else {
System.out.println("количество дней в году: 365");

}
}
}

По дате
По рейтингу
Аватар пользователя
Новичок
7мес

В вашем коде отсутствует буква **`i`** в слове **`import`**. Кроме того, для логического оператора **ИЛИ** рекомендуется использовать двойную вертикальную черту **`||`** вместо одной **`|`**, так как это логический оператор, а не побитовый. Также будет полезно добавить сообщение для пользователя, чтобы он знал, что нужно ввести год.

Вот исправленный и улучшенный вариант программы:

```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите год: ");
int year = scanner.nextInt();

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
System.out.println("Количество дней в году: 366");
} else {
System.out.println("Количество дней в году: 365");
}
}
}
```

**Пояснения к изменениям:**

1. **Исправление опечатки:**
- **`mport`** заменено на **`import`**.

2. **Использование логического оператора `||`:**
- В условии `if` заменен побитовый оператор **`|`** на логический **`||`** для правильной работы условия.

3. **Добавление запроса пользователю:**
- Добавлено сообщение **`"Введите год: "`**, чтобы пользователю было понятно, что необходимо ввести год.

4. **Форматирование вывода:**
- Начальные буквы в выводимых строках приведены к заглавным для улучшения читаемости.

**Пример работы программы:**

```
Введите год: 2024
Количество дней в году: 366
```

Этот код корректно определяет, является ли введённый год високосным, и выводит соответствующее количество дней.

Аватар пользователя
Искусственный Интеллект
7мес

разница между | и ||
в случае | твоя программа будет проверять все перечисленные условия... хотя ведь понятно что если первая скобка в условиях даёт "истину", то проверять вторую скобки (делимость на 400 без остатка) не имеет смысла
вот и пиши || в место |.
программа не станет проверять то, что никак уже не влияет на погоду...
это не пустяк... просто представь что у тебя там во второй скобке проверка посложнее... например, делается запрос к какому-то сервису... вот и прикинь...

Аватар пользователя
Мудрец
7мес

Код:

12345678910111213141516171819202122
 import java.util.Scanner; 
 
public class Main { 
    public static void main(String[] args) { 
        // Создаем сканнер для чтения ввода с консоли 
        Scanner scanner = new Scanner(System.in); 
         
        // Читаем год, введенный пользователем 
        int year = scanner.nextInt(); 
         
        // Проверяем, является ли год високосным 
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { 
            System.out.println("количество дней в году: 366"); 
        } else { 
            System.out.println("количество дней в году: 365"); 
        } 
         
        // Закрываем сканнер, чтобы избежать утечки ресурсов 
        scanner.close(); 
    } 
} 
 
Аватар пользователя
Мыслитель
7мес

В вашем коде практически всё правильно, но есть несколько моментов, которые можно улучшить:

1. Оператор `|` в условии `if` лучше заменить на `||`, так как `|` выполняет побитовое "ИЛИ" (работает, но это не совсем то, что нужно для логического "ИЛИ").
2. Убедитесь, что вводимое значение `year` действительно является числом. Можно предусмотреть проверку на корректность данных.

Вот улучшенный и исправленный вариант программы:

```java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner( System.in );
System.out.print("Введите год: ");

// Проверка на корректный ввод
if (scanner.hasNextInt()) {
int year = scanner.nextInt();

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
System.out.println("Количество дней в году: 366");
} else {
System.out.println("Количество дней в году: 365");
}
} else {
System.out.println("Ошибка: введите целое число.");
}

scanner.close();
}
}
```

### Пояснения:
- Добавлено приглашение к вводу: `System.out.print("Введите год: ");` — это поможет пользователю понять, что нужно ввести.
- Проверка корректности ввода `if (scanner.hasNextInt())` предотвращает ошибку, если пользователь вводит не число.
- Закрытие `scanner` в конце с помощью `scanner.close();` освобождает ресурсы.

Аватар пользователя
Мастер
7мес

В вашем коде почти всё правильно, но есть одна небольшая ошибка в условии проверки високосного года. Вместо оператора | нужно использовать || для логического ИЛИ, потому что | — это побитовая операция ИЛИ, а вам нужно логическое ИЛИ.

Вот исправленный код:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// Создаём объект для ввода с клавиатуры
Scanner scanner = new Scanner(System.in);

// Вводим год
int year = scanner.nextInt();

// Проверяем, високосный ли это год
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
System.out.println("Количество дней в году: 366");
} else {
System.out.println("Количество дней в году: 365");
}

// Закрываем сканер (это хорошая практика)
scanner.close();
}
}

Объяснение:
Условие високосного года:

Год високосный, если:
Он делится на 4 и не делится на 100, или он делится на 400.
То есть год 2000 и 2400 — високосные, а 2100, 2200 и 2300 — обычные.
Использование ||:

Оператор || — это логическое ИЛИ, и он используется для проверки нескольких условий, например, для проверки двух вариантов: делится ли год на 4, но не на 100, или делится ли на 400.
Закрытие сканера:

После завершения работы с Scanner хорошей практикой является его закрытие, чтобы освободить ресурсы.
Теперь программа будет корректно вычислять количество дней в году в зависимости от того, високосный ли это год или нет.