黑马程序员技术交流社区

标题: 我编的java程序哪里有问题? [打印本页]

作者: 草莓小曲奇    时间: 2016-3-31 20:20
标题: 我编的java程序哪里有问题?
小芳的妈妈每天给她25元钱,她都会存起来,但是,
每当这一天是存钱的第5天或者5的倍数的话,她都会花去60元钱,
请问,经过多少天,小芳才可以存到1000元钱。

我的编程思路是:

class hello {
        public static void main(String[] args) {
                //每天要存储的钱是 25元
                int dayMoney = 25;
               
                //存钱的初始化值是0
                int daySum = 0;
               
                //从第一天开始存储
                int dayCount = 1;

                while(daySum<=1000) {                       

                        if  (dayCount%5 == 0) {
                                daySum -= 60;
                                System.out.println("第"+dayCount+"天花了60");
                }
                        daySum = daySum + dayMoney;
                        dayCount++;
                        System.out.println("第"+dayCount+"天存了 "+daySum);
                       
                }
                System.out.println("要用"+dayCount+"天存够1000");
        }
}

答案是用74天存够,我的答案是75天,想知道按我的思路哪里出了问题?
作者: ly123456    时间: 2016-3-31 21:15
这个程序没问题啊,编译运行都没问题,你所谓的问题是什么?
作者: 妄想年少轻狂    时间: 2016-3-31 21:23
存够1000后dayCount++,dayCount-1是要用的天数。还有应该是daySum < 1000,相等时就不循环了,(虽然对你这个没影响)
作者: 15507596326    时间: 2016-3-31 21:23
你看控制台的打印结果就知道 第一行打印的是"第2天存了 25" 明显错了呀!应该是第一天存15,实际就是你的逻辑错误
dayCount++;
System.out.println("第"+dayCount+"天存了 "+daySum);
改为System.out.println("第"+dayCount+++"天存了 "+daySum);
结果是74天存到了1010

作者: 草莓小曲奇    时间: 2016-3-31 22:27
15507596326 发表于 2016-3-31 21:23
你看控制台的打印结果就知道 第一行打印的是"第2天存了 25" 明显错了呀!应该是第一天存15,实际就是你的逻辑 ...

非常感谢
作者: 草莓小曲奇    时间: 2016-3-31 22:28
妄想年少轻狂 发表于 2016-3-31 21:23
存够1000后dayCount++,dayCount-1是要用的天数。还有应该是daySum < 1000,相等时就不循环了,(虽然对你这 ...

非常感谢
作者: 草莓小曲奇    时间: 2016-3-31 22:48
修改了一下

class hello {
        public static void main(String[] args) {
                //每天要存储的钱是 25元
                int dayMoney = 25;
               
                //存钱的初始化值是0
                int daySum = 0;
               
                //从第一天开始存储
                int dayCount = 1;

                while(daySum<115) {                        

                        if  (dayCount%5 == 0) {
                                daySum -= 60;
                                System.out.println("第"+dayCount+"天花了60");
                }
                        daySum = daySum + dayMoney;
                     
                        System.out.println("第"+dayCount+"天存了 "+daySum);
                                                dayCount++;
                        
                }
                System.out.println("要用"+--dayCount+"天存够1000");
        }
}
总结了一下错误,大家看看对不对
A:逻辑错误,应该在先输出第一天的数据后,再对天数+1;
B;在74天时的数据是1010,已经达到目标1000,但是数据还在循环,是在dayCount=75天时发现daySum大于1000而结束,输出的dayCount=75,正确的天数应该是上一个循环的dayCount,所以应该减1

多谢上面的朋友们提醒!!!
作者: Vincent丶fly    时间: 2016-4-1 00:21
小芳要被他妈打死了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2