Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Решение задачи джава

Аня Ванина Знаток (388), открыт 6 дней назад
Нужна немного помощь, понятно что можно просто посмотреть какие то ответы и узнать, но интересно что конкретно не так с вот этим кодом и почему он не работает, на вводе подается числа и видны только первые два теста, которые код проходит, на третьем начинает выеживаться)

import java.util.Scanner;
class MyProgram {
public static void main(String[] args) {
Scanner sc = new Scanner( System.in );
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
boolean year = (c % 4 == 0 && c % 100 != 0) || (c % 400 == 0);
boolean s = true;




if (c>0 && year == true)
{if (b<1||b>12){
s = false;
}if ((b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10 || b == 12)&& (a<1 || a>31)){
s = false;
}if ((b == 2)&&(a<1 || a>29)){
s = false;
}if((b == 4 || b == 6 || b == 9 || b == 11) && (a<1 || a>30)){
s = false;
}
}
else if(c>0 && year == false)
{if (b<1||b>12){
s = false;
}if ((b == 1 || b == 3 || b == 5 || b == 7 || b == 8 || b == 10 || b == 12)&& (a<1 || a>31)){
s = false;
}if ((b == 2)&&(a<1 || a>=29)){
s = false;
}if((b == 4 || b == 6 || b == 9 || b == 11) && (a<1 || a>30)){
s = false;
}
}
System.out.println(s);
}
}
ну и собственно сам код
2 ответа
po100lit Мыслитель (5224) 6 дней назад
import java.util.Scanner;

class MyProgram {
public static void main(String[] args) {
Scanner sc = new Scanner( System.in );
int a = sc.nextInt(); // день
int b = sc.nextInt(); // месяц
int c = sc.nextInt(); // год
sc.close();

boolean s = true;

// Проверка на корректность года и месяца
if (c <= 0 || b < 1 || b > 12) {
s = false;
} else {
// Проверка на високосный год
boolean year = (c % 4 == 0 && c % 100 != 0) || (c % 400 == 0);

// Проверка на корректность дня в зависимости от месяца
if (a < 1 || a > 31) {
s = false;
} else if (b == 2) { // февраль
if (year && a > 29) s = false;
if (!year && a > 28) s = false;
} else if (b == 4 || b == 6 || b == 9 || b == 11) { // месяцы с 30 днями
if (a > 30) s = false;
}
}

System.out.println(s);
}
}
ПапаВысший разум (151890) 6 дней назад
Зашибенно. Нейросеть скопировала гоβнокод какого-то рукοжοпа.
Александр Искусственный Интеллект (308458) 6 дней назад
ну так учись отладку делать... ведь ты же сам в джаву сунулся... никто тебя насильно не загонял

и откуда нам знать что там за тесты?...

если переменная year у тебя boolean, то в условии не нужно писать

year == true
пишешь просто
year если на истину проверяешь
или просто
!year
если на ложь проверяешь...

млин... какие-то программы пишут хотя ничего даже не пытались учить...
Похожие вопросы