用java写一个程序 显示日历 判断月份是错的 怎么就错了

packagezhou.fei;importjava.util.*;publicclassCalendar{publicstaticvoidmain(String[]ar... package zhou.fei;
import java.util.*;

public class Calendar {

public static void main(String[] args) {
int sum=0;
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
for(int i=2013;i<year;i++){
if((i%4==0&&i%100!=0)||i%400==0){
sum+=366;
}else{
sum+=365;
}
}
System.out.println("2013年到2014年相隔:"+sum+"天");

for( int i=1;i<month;i++){

if(i==2){
if(year%4==0&&year%100!=0||year%400==0){
sum+=29;
}else{
sum+=28;
}
System.out.println("2013年到2014年3月相隔:"+sum+"天");
}else{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
sum+=31;
}else{
sum+=30;
}
}
}
System.out.println("2014年1月1日到2014年3月1日相隔:"+(sum+1)+ "天");
sum+=1;
int wekday=sum%7;
//System.out.println("2014年3月1日为星期:"+sum%7);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
for(int j=1;j<=31;j++){
if(sum%7==6){
System.out.print(j+"\n");
}else{
System.out.print(j+"\t");
}
sum++;
}
}//
}
展开
 我来答
百度网友21a360264
2014-03-03 · TA获得超过1855个赞
知道小有建树答主
回答量:640
采纳率:100%
帮助的人:367万
展开全部
代码比较难看,不过判断月份那里确实有问题,要累加的应该已经过去的月份的天数,而不是当前月份的天数,当前月份还没过完。比如算3月份,要累加的是1、2月份。if(i==2) 这里就错了,其他类似的位置也是同样问题。
追问
就差了一天   怎么改啊
追答

基准是否准确,比如2013年1月1日是星期二,开始计算 wekday 时要校正。

		System.out.println("2014年1月1日到2014年3月1日相隔:"+sum+  "天");
int wekday=(sum+2)%7;  
/////// 加2是因为2013年1月1日是星期二。
//System.out.println("2014年3月1日为星期:" + wekday);  ////////
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
for(int j=1;j<=31;j++){
if(wekday == 6){    ///////////////////
System.out.print(j+"\n");
}else{
System.out.print(j+"\t");
}
sum++;
wekday = (wekday+1)%7;    ////////////////
}
bd_dongyuliang
2014-03-03 · TA获得超过441个赞
知道小有建树答主
回答量:316
采纳率:0%
帮助的人:206万
展开全部
说清楚一点你的问题,我看了半天不知道你说的哪里不对。是输出的日历表不对吗?
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
如果是这个问题的话我知道了。
System.out.println("2014年1月1日到2014年3月1日相隔:"+(sum+1)+ "天");
sum+=1;
int wekday=sum%7; //问题在这里,你这么求这天是星期几是不对的。你这样是建立在2013年1月1日是星期一的基础上的。而2013年1月1日是星期二,所以你就会差了一天。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式