Программа,которая читает год и первые три буквы месяца(первая буква заглавная) и определяет сколько дней в месяце, учитывая високосный год [дубликат]

155
26 сентября 2019, 14:40

На данный вопрос уже ответили:

  • Как сравнивать строки в Java? 2 ответа
import java.util.Scanner;
public class Classwork {
    public static void main(String args[] ) throws Exception {
        Scanner stdin = new Scanner(System.in);
        int year = stdin.nextInt(); 
        String month = stdin.next();
        boolean isLeapYear =
                (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
        if(isLeapYear == true && month == "Feb")
            System.out.print(month + " " + year + " has 29 days");
        else if(isLeapYear == false && month == "Feb") 
            System.out.print(month + " " + year + " has 28 days");
        switch(month){
            case "Jan": System.out.print(month + " " + year + " has 31 days"); break;
            case "Mar": System.out.print(month + " " + year + " has 31 days"); break;
            case "Apr": System.out.print(month + " " + year + " has 30 days"); break;
            case "May": System.out.print(month + " " + year + " has 31 days"); break;
            case "Jun": System.out.print(month + " " + year + " has 30 days"); break;
            case "Jul": System.out.print(month + " " + year + " has 31 days"); break;
            case "Aug": System.out.print(month + " " + year + " has 31 days"); break;
            case "Sep": System.out.print(month + " " + year + " has 30 days"); break;
            case "Oct": System.out.print(month + " " + year + " has 31 days"); break;
            case "Nov": System.out.print(month + " " + year + " has 30 days"); break;
            case "Dec": System.out.print(month + " " + year + " has 31 days"); break;
        }



    }
}

Когда я ввожу в инпут 2222 Feb, оно выводит пустое значение. Скажите, что не так и что нужно исправить?

Answer 1
    if(isLeapYear && month.equals("Feb"))
    System.out.print(month + " " + year + " has 29 days");
    else if(!isLeapYear && month.equals("Feb"))
        System.out.print(month + " " + year + " has 28 days");

Соль в том, что строки нужно сравнивать через .equals, а не через ==.

Answer 2

Нет необходимости делать отдельный код для февраля, можно его спокойно встроить в switch:

case "Feb": 
if (isLeapYear) {
System.out.print(month + " " + year + " has 29 days"); 
} else {
System.out.print(month + " " + year + " has 28 days"); 
}
break;

Кроме того, месяцы, имеющие одинаковое количество дней (30 или 31) можно сгруппировать:

case "Jan": 
case "Mar": 
case "May": 
// итд
     System.out.print(month + " " + year + " has 31 days"); 
     break;
Answer 3
Нельзя сравнивать строки с помощью ==

Используйте метод java - .equals("");

Допустим есть строка String str = "Hello, world!";

И нужно сравнить ее:

    `if(str.equals("Hello, world!")){
       System.out.println("Сравнение произошло успешно!");
    }`

Делаем как то так. И все у вас должно будет заработать

Answer 4
Scanner stdin = new Scanner(System.in);
int year = stdin.nextInt(); String month = stdin.next();
boolean isLeapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
if(isLeapYear && month.equalsIgnoreCase("Feb"))
    System.out.print(month + " " + year + " has 29 days");
else
    if(month.equalsIgnoreCase("Feb"))
        System.out.print(month + " " + year + " has 28 days");
switch(month){
    case "Jan": System.out.print(month + " " + year + " has 31 days"); break;
    case "Mar": System.out.print(month + " " + year + " has 31 days"); break;
    case "Apr": System.out.print(month + " " + year + " has 30 days"); break;
    case "May": System.out.print(month + " " + year + " has 31 days"); break;
    case "Jun": System.out.print(month + " " + year + " has 30 days"); break;
    case "Jul": System.out.print(month + " " + year + " has 31 days"); break;
    case "Aug": System.out.print(month + " " + year + " has 31 days"); break;
    case "Sep": System.out.print(month + " " + year + " has 30 days"); break;
    case "Oct": System.out.print(month + " " + year + " has 31 days"); break;
    case "Nov": System.out.print(month + " " + year + " has 30 days"); break;
    case "Dec": System.out.print(month + " " + year + " has 31 days"); break;
}
READ ALSO
Удаление переменных [закрыт]

Удаление переменных [закрыт]

Что будет, если объявить в классе переменные, создать массив, добавить в него переменные, а после чего присвоить массиву null? Удалятся ли переменные?...

142
Как сделать полностью прозрачное окно с непрозрачной рамкой?

Как сделать полностью прозрачное окно с непрозрачной рамкой?

Мне нужен полный доступ к прозрачной части, те

125
Проблема с AdMob

Проблема с AdMob

Изменил подпись APK c Android debug на свою и перестал получать рекламу от AdMob(Ошибка 3)

150
Калькулятор на JS выдаёт NaN. Всего три действия

Калькулятор на JS выдаёт NaN. Всего три действия

Совсем нет опыта JSДелаю супер простой калькулятор

129