牛客网之程序员日与字母统计

本文介绍了一款用于计算特定日期是一年中第几天的软件,特别关注于将每年的第256天设定为程序员节。文章详细阐述了判断闰年、解析日期字符串和计算累计天数的算法。

首先是基础-程序员日

题目描述:

nowcoder是一个程序员,他决定把每年的第256天作为程序员的节日,所以他一直期待着这一天的到来。请实现一款软件,给定一个日期,输出这个日期是该年的第几天

输入描述:

输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

输出描述:

对于每组输入数据,输出一行,表示该日期是该年的第几天。

示例输入:

2000-01-01

示例输出:

1

首先给出代码。该题主要的思路为1.判断闰年2.获取字符串中的数字3.用数组存储日,并累加。

// write your code here
//闰年判断与月份判断
//
import java.util.Scanner;
public class Main{
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        while(input.hasNext())
        {
            int[]ddd={31,28,31,30,31,30,31,31,30,31,30,31};
            int[]number=new int[3];
            String s =input.nextLine();
            int flag=0;
            number=change(s);
            int year=number[0];
            int month = number[1];
            int day=number[2];
            int ri=0;
            if((year%4==0&&year%100!=0)||year%400==0)
            {
               // flag=1;
                ddd[1]=29;
            }
            for(int i=0;i<month-1;i++)
            {
                ri+=ddd[i];
            }
            ri+=day;
            System.out.println(ri);
        }
    }
    //int是不对的因为要返回数组,会出现如下错误
    //Main.java:14: error: incompatible types: int cannot be converted to int[]
//number=change(s);
//^
//Main.java:46: error: incompatible types: int[] cannot be converted to int
//return number;
    public static int[] change(String s){
        //获取字符串s的0,3
        String year=s.substring(0,4);
            String month=s.substring(5,7);
        String day=s.substring(8);
        int yy=Integer.parseInt(year);
        int mm=Integer.parseInt(month);
        int dd=Integer.parseInt(day);
        int[]number = new int[3];
        number[0]=yy;
        number[1]=mm;
        number[2]=dd;
        return number;
        //不能这么返回,可以返回一个数组
        //return yy,mm,dd;
    }
}

在本题中遇到了一些问题:

1.还是不熟悉数组的命名方式:int[]number=new int[3];

2.对于方法了解不够透彻:不能返回多个数据,如若返回多个数据,可以存在一个数组中,返回数组。

public static int[] change(String s),要这样定义一个返回数组的方法。

3.使用了字符串的函数,如substring(begin,end),substring为获取子串的方法,获取字符串中[begin,end-1]位置的子字符串。

如果只输入一个begin,则为从begin数字到字符串尾部。

4.使用了将字符串转换为数字的方法Integer.parseInt(s)的方法。

5.重温了判断闰年的方法:能被4整数且不能被100整除,或可以整除400。

参考了其他人的方法发现了一个Java类

import java.text.ParseException;
import java.text.SimpleDateFormat;

会后续参考并写出自己理解。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值