用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++;
}
}//
} 展开
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++;
}
}//
} 展开
2个回答
展开全部
代码比较难看,不过判断月份那里确实有问题,要累加的应该已经过去的月份的天数,而不是当前月份的天数,当前月份还没过完。比如算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; ////////////////
}
展开全部
说清楚一点你的问题,我看了半天不知道你说的哪里不对。是输出的日历表不对吗?
日 一 二 三 四 五 六
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日是星期二,所以你就会差了一天。
日 一 二 三 四 五 六
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日是星期二,所以你就会差了一天。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询