给定一个月和一年,返回天数

时间:2014-05-04 22:58:10

标签: java

该程序应该需要一个月和一年,然后返回天数;然而,它只需要几个输入然后给出输出。我认为问题出在Scanner实例上,因为我尝试过提供预设值,例如month = 2year = 2000,而且效果很好。

public static int getNumberofDays(int month, int year) {
    Scanner in = new Scanner(System.in);
    month = in.nextInt();
    year = in.nextInt();


    if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        checking which month is it
        if(month == 1 || month == 3 || month == 5 ||
                   month == 7 || month == 9 || month == 11)

        {
            return 31;
        } else if(month == 4 || month == 6 || month == 8 ||
                          month == 10 || month == 12) {
            return 30;
        } else {
            return 29;
        }
    } else {
        if(month == 1 || month == 3 || month == 5 || month == 7 ||
                   month == 9 || month == 11)

        {
            return 31;
        } else if(month == 4 || month == 6 || month == 8 ||
                          month == 10 || month == 12)

        {
            return 30;
        } else {
            return 28;
        }

    }
}

1 个答案:

答案 0 :(得分:1)

怪异

Scanner in = new Scanner(System.in);
month = in.nextInt();
year = in.nextInt();

您在班级中实例化新Scanner参数设置为下一个整数值。

如果是这种情况,为什么要传递值?

抛弃该方法中的Scanner声明,以便实际使用您传入的内容,并适当地推进Scanner

这就是说你所遇到的逻辑错误 - 每个月的日子都不正确。例证:11月有30天,但你的计划将返回31。

这是一个样本。

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Month?");
    int month = scan.nextInt();
    scan.nextLine();
    System.out.println("Year?");
    int year = scan.nextInt();
    scan.nextLine();
    System.out.println(getNumberOfDays(month, year));
}