CSDN算法技能树答题----星系炸弹(java版)

题目:星系炸弹:

星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

问题分析:

1.判断是否为闰年

  • 先判断是否为闰年,这会影响2月份是28还是29,如果是闰年,2月份是29,如果不是,就是28
  • 闰年分为普通闰年和世纪闰年,其判断方法为:公历年份是4的倍数,且不是100的倍数,为普通闰年。公历年份是整百数,且必须是400的倍数才是世纪闰年。归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。
  • 闰年是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。地球绕太阳运行周期为365天5小时48分46秒,即一回归年。公历的平年只有365日,比回归年短约0.2422日,所余下的时间约为每四年累计一天,故第四年于2月末加1天,使当年的历年长度为366日,这一年就为闰年。

 2.年,月,日的累加

当天数day值大于当月总天数,day从1号重新算起,那么月份加一;

当月份值大于当年的总月份,那么月份从一月重新算,那么年份加一;

代码如下: 

public static void main(String []args) {
		int[] monthdays = {31,28,31,30,31,30,31,31,30,31,30,31};
		int year = 2014 ,month = 11,day=9;
		int days = 1000;
		for(int i=1;i<=days;i++){
		day++;
		if(year%400 == 0 || (year%4 == 0 && year%100 != 0)){
		monthdays[1]=29; 
		}else{
		monthdays[1]=28;
		}
		if(day>monthdays[month-1]){
		day=1;
		month++;
		}
		if(month>12){
		month=1;
		year++;
		}
		}
		System.out.println(year+"年"+month+"月"+day+"日");
		}

year%400 == 0 || (year%4 == 0 && year%100 != 0

这便是判断是否为闰年的条件 

最后输出:

 

 

最后答案为:2017年8月5日

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值