第十届蓝桥杯 JavaA 星期一

第十届蓝桥杯 JavaA 星期一


标题:星期一

整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?
(不要告诉我你不知道今天是星期几)

注意:需要提交的只是一个整数,不要填写任何多余的内容或说明文字。


答案: 5217
法一:
思路:
查日历得:2000/12/31为周日,死算。
public class 结果填空2星期一 {
	/**5217
	 * 1.求1901到2000年一共多少天 2.查日历得:2000/12/31为周日 3.星期二
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int sum = 0;
		for (int i = 1901; i <= 2000; ++i) 
			sum += isLeapYear(i) ? 366 : 365;
		
		// 总工天数36525
		System.out.println(sum);
		System.out.println(sum / 7.0);// 一共5217个星期
		System.out.println(sum - 5217 * 7);// 零6天
	}

	// 判断闰年
	public static boolean isLeapYear(int year) {
		if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
			return true;
		return false;
	}
}


法二(最优):
思路:
利用Calendar,SimpaleDateFormat类,求得相差5217星期零6天,最后推出。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * 1.求1901到2000年一共多少天 2.查日历得:2000/12/31为周日 3.星期二
 * 
 * @param args
 */
public class 结果填空2星期一2 {
	static long day;
	static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd E ");

	public static void main(String[] args) {
		Calendar c1 = new GregorianCalendar();
		Calendar c2 = new GregorianCalendar();

		c1.set(1901, 0, 1);
		c2.set(2000, 11, 31);

		day = ((c2.getTimeInMillis() - c1.getTimeInMillis()) / (1000 * 3600 * 24)) + 1;
		System.out.println(day / 7 + " " + day % 7);

		System.out.println(df.format(c2.getTime()));

	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值