输出今年是第几天

需求:
输入一个日期,然后输出是今年的第几天。

思路:输出一个字符串,规定输入方式。然后截取字符串的年,月,日。最后将年月日转化成整型。还有关于闰年的判断。

字符串转为整型:
Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象),这样转完的对象就具有方法和属性了。 而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性 。

以及用到函数indexOf(),根据字符‘/’来截取分好年月日。
substring(a,b)用此函数来截取函数,包括a,不包括b

public static void main(String[] args) {
        // TODO Auto-generated method stub
        //输入日期:
        System.out.println("输入日期,显示为这一年的第几天:输入格式:年/月/日");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();//输入字符串

        getDay(str);

    }

    private static void getDay(String str) {
        // TODO Auto-generated method stub
        int sum=0;//记录总数
        int a = str.indexOf('/');//获取年,
        int b = str.indexOf('/', a+1);//获取月份,从a+1开始

        //提取年份
        int year = Integer.parseInt(str.substring(0, a));//将字符串转换为整型,截取字符串
        //提取月份
        int month = Integer.parseInt(str.substring(a+1, b));
        //提取天
        int day = Integer.parseInt(str.substring(b+1, str.length()));

        int er;//二月的天数
        //判断:
        if(year/400==0) {
            er=29;
        }
        else
        {
            er=28;
        }
        month--;
        if(month==0)
            sum+=31;
        while(month>0) {
            if(month==1||month==3||month==5||month==7||month==8||month==10) {
                sum+=31;
            }
            if(month==4||month==6||month==9||month==11) {
                sum+=30;
            }
            if(month==2) {
                sum+=er;
            }
            month--;
        }   
        System.out.println("今年的第"+(sum+day)+"天");

    }

还有另外的方法:创建一个数组

int[] month = {31,28,31,30,31,30,31,31,30,31,30,31}//每个月份的天数

当二月为闰年的时候,将month[1]=29;
最后直接利用数组来加天数就好了,此方法更为简单和易于理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值