为什么输入二月都是29天呢

u014789630 2014-04-18 07:53:29
import java.util.*;
public class u4 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份");
int year=in.nextInt();
System.out.println("请输入月份");
int month=in.nextInt();
int sum=0;
int u=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum+=366;
}else{
sum+=365;
}
}
for(int I=1;I<month;I++){
if(I==2){
if(year%4==0&&year%400==0||year%100!=0){
sum+=29;
}else{
sum+=28;
}
}else if(I==4||I==6||I==9||I==11){
sum+=30;
}else{
sum+=31;
}
}
/*
sum+=7;
System.out.println("1900年1月1日到2016年5月7日一共:"+sum+"天");
System.out.println("2016年5月7日为星期"+sum%7);
*/
int wekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
if(month==2){
if(year%4==0&&year%400==0||year%100!=0){
u=29;
}else{
u=28;
}
}else if(month==4||month==6||month==9||month==11){
u=30;
}else{
u=31;
}
for(int i=1;i<=u;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}
...全文
301 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuebichongkafei 2014-05-18
  • 打赏
  • 举报
回复
用Calendar类判断更简单
u012282088 2014-05-16
  • 打赏
  • 举报
回复

year%4==0&&year%400==0||year%100!=0
这个改一下:

year %400==0 || year%4==0&&year%100!=0
铁匠梁老师 2014-05-16
  • 打赏
  • 举报
回复
条件断路,已经有人给出正确答案,不再赘述
yuhouqingchen_2648 2014-05-15
  • 打赏
  • 举报
回复
楼上已经指出的很明显了,问题所在
Kenzson 2014-04-18
  • 打赏
  • 举报
回复
    if (month == 2) {
        if (year % 4 == 0 && (year % 400 == 0 || year % 100 != 0)) {
            u = 29;
        } else {
            u = 28;
        }
WayneXuan 2014-04-18
  • 打赏
  • 举报
回复
year%4==0&&year%400==0||year%100!=0 相当于 (year%4==0&&year%400==0)||year%100!=0 只有100,200,300等才满足要求 最好写成 year % 400 == 0 || year % 4 == 0 && year % 100 != 0
-江沐风- 2014-04-18
  • 打赏
  • 举报
回复
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧