一道经典的JAVA面试题
2010-07-02 16:35
519 查看
随便给你一个日期(例如2009-8-20),问这一天是否是“星期六”? 问我的时候没什么思路,回来也没太想明白?
算也行.
Java code public int getWeek(int dYear,int dMonth,int dDay){
int days=0;
int[] months=;
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i days+=months[i];
}
days+=dDay+6;
return (days)%7;
}
解释一下:days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
以公元0年为基准,看过了多少年。
1.每一年按365天算。
2.做调整,看经过了多少闰年。按闰年的规律做相应的调整。
dDay+6是因为0年1月1日是星期六。(这个可以不知道,但可以一个一个试出来,比如你假设是星期日,算出来的结果不对,你调整一下就对了)
算也行.
Java code public int getWeek(int dYear,int dMonth,int dDay){
int days=0;
int[] months=;
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i days+=months[i];
}
days+=dDay+6;
return (days)%7;
}
解释一下:days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
以公元0年为基准,看过了多少年。
1.每一年按365天算。
2.做调整,看经过了多少闰年。按闰年的规律做相应的调整。
dDay+6是因为0年1月1日是星期六。(这个可以不知道,但可以一个一个试出来,比如你假设是星期日,算出来的结果不对,你调整一下就对了)
相关文章推荐
- 顺序打印ABC------java多线程的一道经典面试题
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- 一道经典的Java面试题,抛析内部结构
- 一道java经典面试题
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- 一道经典的Java面试题--你会吗?
- 多线程按顺序依次打印ABCD---java多线程的一道经典面试题
- 一道经典的java面试题分析
- 关于java继承的一道经典面试题
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- 一道经典的JAVA面试题
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- Java经典的一道面向对象面试题
- 实践JAVA wait(), notify(),sleep方法--一道多线程的面试题
- 一道3G门户的面试题 (Java)
- 由字符串反转(使用递归)引申出来一道Java面试题
- 史上最难的一道Java面试题 (分析篇)
- 运行时异常与一般异常有何异同? —— Java经典面试题系列
- java经典面试题!
- 经典的Java基础面试题