首页 文章

为什么我的闰年算法不起作用(Java)? [重复]

提问于
浏览
4

这个问题在这里已有答案:

这是我有的:

Scanner input = new Scanner(System.in);
    System.out.print("Enter a year: ");
    int Year = input.nextInt();
    System.out.print("Enter a month (first three letters with the first"
            + " letter uppercase): ");
    String Month = input.next();

    String ThirtyOne = "Jan" + "Mar" + "May" + "Jul" + "Aug" + "Oct" + "Dec";
    String DaysThirtyOne = ThirtyOne.substring(21) + "31";

    String Thirty = "Apr" + "Jun" + "Sep" + "Nov";
    String DaysThirty = Thirty.substring(12) + "30";

    String TwentyEight = "Feb";
    String DaysTwentyEight = TwentyEight.substring(3) + "28";
    String DaysLeapYear = TwentyEight.substring(3) + "29";


    boolean isLeapYear = ((Year % 4 == 0) && (Year % 100 != 0) && (Year % 400 == 0));

    if (ThirtyOne.contains(Month)) {
        System.out.println(Month + " " + Year + " has " + DaysThirtyOne 
                + " days in it.");
    }
    if (Thirty.contains(Month)) {
        System.out.println(Month + " " + Year + " has " + DaysThirty 
                + " days in it.");
    }
    if(TwentyEight.contains(Month)) {
        System.out.println(Month + " " + Year + " has " + DaysTwentyEight 
                + " days in it.");
    }
    if (isLeapYear) {
        System.out.println(Month + " " + Year + " has " + DaysLeapYear 
                + " days in it.");
    }

我是编程新手,所以如果这段代码看起来不成熟,我也不会感到惊讶 . 无论如何,我有一年和一个月的用户输入(前三个字母) . 我为闰年创建了一个布尔变量,表示用户输入的任何年份需要被4,100和400整除 . 然后,我创建了一个if语句,如果它是打印出来的闰年“2月(无论哪一年)用户输入)中有DaysLeapYear . “我认为我的算法有问题,因为如果我要取出TwentyEight的if语句并且只保留闰年if语句,那么计算机甚至不会打印出2月份如果是闰年那么多天 . 再一次,我认为我在算法中出错了,但它可能在其他地方,我希望再看看这个,看看有人看到的东西我不是因为我毕竟是新手 .

1 回答

  • 1

    首先你的isLeapYear条件需要改变 .

    boolean isLeapYear = ((Year % 4 == 0) && (Year % 100 != 0) || (Year % 400 == 0));
    

    接下来你的if(TwentyEight.contains(月))这个需要改变以考虑闰年 .

    if(TwentyEight.contains(Month) && !isLeapYear) {
            System.out.println(Month + " " + Year + " has " + DaysTwentyEight
                    + " days in it.");
    }
    

相关问题