2013Java本科B第一题


标题: 世纪末的星期


    曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。

    还有人称今后的某个世纪末的12月31日,如果是星期一则会....

    有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 

    于是,“谣言制造商”又修改为星期日......

    1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?

    请回答该年份(只写这个4位整数,不要写12月31等多余信息)
正确答案:2299

第一种解决:

import java.util.Date;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//闰年 4 !100 |400
		for(int i=1999;i<=9999;i+=100){
			Date date=new Date(i-1900,12-1,31);//注意月份-1
			if(date.getDay()==0){//周日的下标是0
				System.out.println(i);
				break;
			}
		}
	}

}
/*
Date date=new Date(year,month,date,hrs,min,sec);

或
Date date=new Date(year,month,date);
分配 Date 对象并初始化此对象,以表示本地时区中由 year、month、date(hrs min sec)
参数:
year - 减 1900 的年份。
month - 0-11 之间的月份。
date - 一月中 1-31 之间的某一天。
hrs - 0-23 之间的小时数。
min - 0-59 之间的分钟数。
sec - 0-59之间的秒数。
或
Date date=new Date(long date);
用长整数date创建Date对象,date表示从1970年1月1日00:00:00时开始到该日期时刻的微妙数。

date.getDay();
返回此日期表示的周中的某一天。
返回值 (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) 表示一周中的某一天,该周包含或开始于此 Date 对象所表示的瞬间(用本地时区进行解释)。 
注意周日返回的是0;
返回:
此日期所表示的一周中的某一天。

date.getDate();
返回的是此日期所表示的月份中的某一天。

*/

第二种解决:

import java.util.Calendar;
import java.util.Date;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=1999;i<=9999;i+=100){
			Calendar calendar=Calendar.getInstance();
			calendar.set(i,12-1,31);
			if(calendar.get(Calendar.DAY_OF_WEEK)-1==0){
				System.out.println(i);
				break;
			}
		}
		
	}

}
/*

Calendar calendar=Calendar.getInstance();
创建Calendar对象,的到当前系统的日期时间。
calendar.set(YEAR,MONTH,DAY_OF_MONTH);
calendar.set(YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE);
calendar.set(YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY,MINUTE,SECOND);
设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。 
参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
hourOfDay - 用来设置 HOUR_OF_DAY 日历字段的值。
minute - 用来设置 MINUTE 日历字段的值。
second - 用来设置 SECOND 日历字段的值。

calendar.get(field);获取对象属性field的值
例如:
Calendar.DAY_OF_WEEK表示一个星期中的某天。
该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。
所以周日的下标为1,返回值为1.
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值