题目:输入一个年、月、日格式的日期,如2017 2 3,求这一天是今年的第几天?
忘了这是什么时候遇到的题目了,应该是某个ACM平台上的,难度不大,也就是传说中的“水题”。
说明一下,我在这里分享的代码和解题思路并不能保证一定是正确或者是最优解(尽最大努力,但不保证可靠交付,哈哈~,通常不是最优解,因为我并没有进行优化,各位小伙伴有好的思路也可以告诉我哈~)
话不多说,先上代码,相信大家都能看懂,如果不太明白的,文章最下方我再简单解释一下。
import java.util.Scanner;
public class day {
static int BR [] = {31,28,31,30,31,30,31,31,30,31,30,31};
static int RN [] = {31,29,31,30,31,30,31,31,30,31,30,31};
//****************计算日期*********************
public static void jisuan(int year,int month,int day){
int result=0; //用来存放天数
int re=0; //用来标志year是否为闰年
//判断是否为闰年——————————————————
if(year%4==0&&year%100!=0)
re=1;
else if(year%400==0)
re=1;
//——————————————————————————
//如果是闰年
if(re==0){
for(int k =0;k<month-1;k++){
result = result+BR[k]; //把本月前的所有月份日期相加
}
result = result + day; //再加上本月份的日期day
}
//如果不是闰年
else{
for(int k =0;k<month-1;k++)
result = result+RN[k]; //把本月前的所有月份日期相加
result = result + day; //再加上本月份的日期day
}
System.out.println(result);
}
//******************main********************
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int year = sc.nextInt(); //输入年份
int month = sc.nextInt(); //输入月份
int day = sc.nextInt(); //输入日期
jisuan(year,month,day); //调用jisuan()方法
}
}
相信大家看到这应该都明白了。
思路很简单:
1、输入年、月、日。
2、判断该年是否为闰年(2月份的天数有区别)。
3、把该月份之前的所有月份的天数相加,再加上本月的天数。
就这样吧,有问题评论或者私信我,睡觉了~
)