编写一个程序,提示用户输入年份和月份(前3个字母,首字母大写)然后显示月份的日期

时间:2015-02-16 22:29:01

标签: java netbeans

编写一个程序,提示用户输入一年和一年 一个月的前三个字母名称(大写的第一个字母)和显示 这个月的天数。这是一个示例运行:

输入年份:2001

输入月份:Jan

“2001年1月有31天”

输入年份:2016

输入月份:2月

“2016年1月有29天”(我不明白这一点)我的问题是闰年部分。 我不明白如何使用其他程序,因为天数应该改变。我也不明白为什么“2月”的月份在示例中变为“Jan”。我需要帮助改造我的程序。我可以使用的是以下代码中的内容:“”“如果语句和开关/案例。”“”

import java.util.Scanner;

public class NewClass {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.print("Enter a year: ");
    int year = input.nextInt();
    input.nextLine();

    System.out.print("Enter a month: ");
    String month = input.nextLine();
// Taken from the book per request of the instructor
    boolean isLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));

        switch (month){
        case "Jan":
        case "Mar":
        case "May":
        case "July":
        case "Aug":
        case "Oct":
        case "Dec":
            System.out.println(month + " " + year + " has 31 days"); break;

        case "Apr":
        case "Jun":
        case "Sep":
        case "Nov":
            System.out.println(month + " " + year + " has 30 days"); break;

        case "Feb":
            System.out.println(month + " " + year + " has 28 days");
        }     
    }
 }

此时我会感谢一些帮助或任何形式的提供。我的导师离开的那一周,没有适当的指导,让我完全黑暗。

1 个答案:

答案 0 :(得分:0)

我跑了你的程序。我不确切地知道为什么你在2016年2月收到错误导致2016年1月的结果。当我运行它时,它运行的确切应该如何。但是,当闰年发生时,您没有在2月返回正确的天数。您写出了正确的等式来确定闰年,但您没有使用它。

    case "Sep":
    case "Nov":
        System.out.println(month + " " + year + " has 30 days"); break;

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