关于if条件判断的一个新手问题

leet2 2015-03-18 12:16:24
//求1900年1月1日到2016年5月七日有多少天
public class days1 {
public static void main(String[] args){
int days=0;
for(int year=1900;year<=2015;year++){
if(year%4==0&&year%100!=0||year%400==0){
days+=366;
}else{
days+=365;
}
}//求出1900年1月1日到2015年12月31日的总天数
for(int month=1;month<=4;month++){ //判断月份 大月31天 二月判断29或者28天 小月30天
if(month%2==1||month==8){
days+=31;
}if(month==2){//这里我已经删掉了else提醒 多重if需要用else if
int years=2016;
if(years%4==0&&years%100!=0||years%400==0){
days+=29;
}else{
days+=28;
}
}else{
days+=30;
}
}//求出2016年1月到4月总天数
System.out.println("一共有"+(days+7)+"天");
}
}



各位老师大神好,我编写这段代码时 发现结果与预期不同 然后用debug发现在计算月份时,如1月份 if第一次判断加了31天
但是后来程序在else那里又加了个30天, 这里我就很迷惑了 我不是已经有一个条件判断,然后else不是应该属于我第一个
if判断条件以外的情况了吗 为什么还会自动加了30天???

我自己猜想判断我是少了else if 后面我加上结果运算正确, 但是不明白其中原理,所以贴出来让各位老师大神指教,谢谢!

顺便我想问问我这样判断月份是否正确合理? 谢谢
...全文
217 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leet2 2015-03-18
  • 打赏
  • 举报
回复
引用 2 楼 zys59 的回复:
用毫秒值计算如何?

               Calendar c1900 = Calendar.getInstance();
		c1900.set(1900, 0, 0);		
		Calendar c2016 = Calendar.getInstance();
		c2016.set(2016, 4, 6);		
		long ms = c2016.getTimeInMillis() - c1900.getTimeInMillis();
		long days = ms/1000/60/60/24;
		System.out.println("days = "+days);//输出42495,对吗?
还没学到这么高级的方法。。。。。
三仙半 2015-03-18
  • 打赏
  • 举报
回复
用毫秒值计算如何?

               Calendar c1900 = Calendar.getInstance();
		c1900.set(1900, 0, 0);		
		Calendar c2016 = Calendar.getInstance();
		c2016.set(2016, 4, 6);		
		long ms = c2016.getTimeInMillis() - c1900.getTimeInMillis();
		long days = ms/1000/60/60/24;
		System.out.println("days = "+days);//输出42495,对吗?
飏飏一蝶 2015-03-18
  • 打赏
  • 举报
回复
不加才怪,体会下以下区别 1、 过滤条件由小到大: if (i>5) //i>5的被排除掉了 else if(i>3)//看上面眼色行事,被挖掉一部分了,剩下的3-5区间段被排除了 else //剩下都该如此这般了... 筛选式的,满足条件的就在某一个主体里被虑掉了 这个是一个整体 2、 if...//好吧,我先执行这个 if...//else不在,上面那个执行与否关我鸟事 else if...//我得排除我上面那个人运行了的 这个可以看成2个独立的整体,相互没关联的 好吧,玩完游戏出来扯扯淡 程序再第二个if前加else就对了 还有month==8这个条件永远都不可能达到,你看你的循环条件

62,615

社区成员

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

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