为了账号安全,请及时绑定邮箱和手机立即绑定

数组循环意外停止

数组循环意外停止

POPMUISE 2019-03-21 18:15:54
在试图用代码实现时间戳转换为标准时间(作业)。在实现getMonth方法的时候,希望把剩余天数用数组月份遍历的时候依次减出来,代码如下:public class TimeStamp {public long getYear(){    return (int)(System.currentTimeMillis()/(1461*24*3600d*1000)*4+1970);}public double getMonth() {    //用总天数day-已经过去年份的天数,然后减去每个月的天数,挨个月份遍历    //先求天数:    double day =(long) (System.currentTimeMillis() / (24 * 3600d*1000));    int passDays = 0;    int[] rMonth = new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//闰年月天数    int[] pMonth = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//平年月天数    for (int c = 1970; c < getYear(); c++)//计算天数循环,到2015年整个结束共计的天数    {        int a = 365;        if (c % 4 == 0)            a = 366;        passDays = passDays + a;//总计从时间戳开始过去的天数    }    double leftDays=0;//完整年减去后剩下的天数    leftDays=System.currentTimeMillis()/(24*3600d*1000)-passDays;    leftDays=(int)leftDays;//剩下的天数返回的是对的===========================================================    //=======================================================    //创造一个for循环一个月一个月的遍历减去天数    for(int i=0;i<=11;i++)    {        if (getYear()%4==0)            day=leftDays-rMonth[i];        if (getYear()%4!=0)            day = leftDays - pMonth[i];        if (day<=0)            break;    }    return day/*由于此处未正确实现,仅先作为一个返回值测试点用*/;}            public static void main(String args[])            {                TimeStamp time=new TimeStamp();                System.out.println(time.getMonth());            }            }一部分代码如上,运行后直到返回的leftDays的值都是对的,到了getMonth方法的循环之后,dayDate返回的数值可以看出只执行了一次循环,这是什么问题?
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

原因是每次循环我都只操作了一个变量day,忘了操作leftDays变量,造成每次循环都相当于把day重新计算了一次没什么卵用,。。。问题已解决


查看完整回答
反对 回复 2019-04-24
  • 1 回答
  • 0 关注
  • 351 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号