输入一年,用java计算天数,包括闰年

2022-01-28 13:55:13 标签 javaarraysjava.util.scannerleap-year

我需要修改下面的代码,这样我就可以输入一个给定的年份,并计算它的天数,因为闰年比其他年份多一天。我认为Scanner函数和if语句将在这里有用,但我对如何修改代码感到困惑。

public class Homework {

public static void main(final String[] args)
    {
        final String[] months =
                {
                        "January", "February", "March", "April", "May", "June", "July", "August", "September",
                        "October", "November", "December"
                };
        final int[] days = {31, 28 , 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        //Print out days for each month and add them
        int total = 0;
        for (int m = 0; m < months.length; m++) {
            System.out.println(months[m] + " has " + days[m] + " days.");
            total += days[m];
        }
        System.out.println("===================\nTotal" + total + " days");
    }
}

我还需要计算从1900年到1999年的总天数(包括)。程序将更整洁,如果我写一个方法,以一年为参数,并返回在那一年的总天数,但再次我对它的细节感到困惑。

谢谢!

# # # java。time

我建议你使用java。为现代的Date-Time API计时。

import java.time.LocalDate;
public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(getDays(2020));
        System.out.println(getDays(2021));
    }
    static int getDays(int year) {
        return LocalDate.of(year, 12, 31).getDayOfYear();
    }
}

输出:

366
365

在线演示

了解更多关于现代日期-时间API*从Trail:日期时间。

*由于任何原因,如果你必须坚持Java 6或Java 7,你可以使用ThreeTen-Backport, backport大部分的Java。时间功能Java 6和7。如果你正在为一个Android项目工作,你的Android API级别仍然不符合Java-8检查Java 8+ API可用,通过去糖和如何在Android项目中使用ThreeTenABP。

###你的作业允许你使用java吗?现代Java的日期和时间API?它应该。这是一个人在现实生活中会无条件使用的东西,所以我认为这是你需要学习的东西。

是的:就用Year class and its length() method.方法。

不:对不起,那你得自己算了。在公历中,一年是闰年,有366天,如果它能被4整除,除非能被100整除,否则不能被400整除。所以2000年是闰年,2100年不是。这已经被编码到Java成千上万次,如果你需要看到它,只要搜索。

链接:Documentation of Year。length()。

###对你的代码做最小的改变,我写了另一个循环遍历所有需要的年。这里你只需要给start_year和end_year变量它们的值,这里的标志变量将决定当前年是否闰年。基于此,如果月是二月,年是闰年,那么二月的天数就增加了1天。

public class MyClass {
    public static void main(final String[] args)
    {
        final String[] months =
                {
                        "January", "February", "March", "April", "May", "June", "July", "August", "September",
                        "October", "November", "December"
                };
        final int[] days = {31, 28 , 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        //Print out days for each month and add them
        int start_year = 2000;
        int end_year = 2001;
        
        int total = 0;
        for(int year=start_year ; year<=end_year; ++year){
            //to check if year is prime, flag is true if year is leap else false
            boolean flag = (((year % 4 == 0) && (year % 100 != 0)) ||(year % 400 == 0));
            
            for (int m = 0; m < months.length; m++) {
                if(flag&&m==1){
                    System.out.println(months[m] + " has " + (days[m]+1) + " days.");
                    total += days[m]+1;
                }
                else{
                    System.out.println(months[m] + " has " + days[m] + " days.");
                    total += days[m];
                }
            }
            System.out.println("===================\nTotal" + total + " days");
        }
    }
}
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码