黑马程序员技术交流社区
标题: 大牛,帮我看一下这个程序。 [打印本页]
作者: wuchuang1992 时间: 2013-10-29 13:24
标题: 大牛,帮我看一下这个程序。
小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,小明拿到钱后会把所有零花钱花掉一半。
请编程计算,从周一开始,小明需要多少天才能存够100元?
- public class Test{
- public static void main(String args[]){
-
- int sum = 0;
- int day = 1;
-
- while(sum<=100){
- sum += 20;
-
- //星期日,花一半
- if(day%7==0)
- sum = sum/2;
- else
- //星期1-6,花一半
- sum = sum/2;
- day++;
- }
-
- System.out.println(day--);
- }
- }
复制代码
作者: 零下五度的水 时间: 2013-10-29 13:46
明显是理解问题,平时是花掉20块钱的一半,就是每天花10块钱
作者: 靓仔 时间: 2013-10-29 14:02
星期一到星期六的钱不应该是sum=sum/2,sum=sum/2代表你把存的钱花一半,而不是平日花一半。所以说:平时里他每天只存10元,星期天存20元,最后在花去总得存钱数一半。
程序可以这样写
public class Test{
public static void main(String args[]){
int sum = 0;
int day = 1;
while(sum<=100){
sum += 10;//星期一到星期六存的钱
if(day%7==0)
sum=sum+20;//星期天的钱数为20,没有花
sum = sum/2;
day++;
}
System.out.println("存入100的天数为: "+day);
}
}
这是我的理解!
作者: 李文帅 时间: 2013-10-29 14:12
你写的代码存在问题,题目的意思是周一到周六每天有20元,每天花掉10元,所以周一到周六每天能剩10元,而你的代码- else
- 14. //星期1-6,花一半
- 15. sum = sum/2;
复制代码 代表的意思是花掉身上所有钱的一半
还有- //星期日,花一半
- 11. if(day%7==0)
- 12. sum = sum/2;
复制代码 周末的时候也会有20元零用钱,周末所剩的钱应该是以前身上所有的钱加上今天的20元,然后在除以2 sum = (sum+20)/2;
正确代码应该是这样:- 01.public class Test{
- 02. public static void main(String args[]){
- 03.
- 04. int sum = 0;
- 05. int day = 1;
- 06.
- 07. while(sum<=100){
- 08. sum += 20;
- 09.
- 10. //星期日,花一半
- 11. if(day%7==0)
- 12. sum = (sum+20)/2;
- 13. else
- 14. //星期1-6,花一半
- 15. sum = sum + 20/2;
- 16. day++;
- 17. }
- 18.
- 19. System.out.println(day--);
- 20. }
- 21.}
复制代码
作者: FFF 时间: 2013-10-29 14:31
-
- //星期日,花一半
- if(day%7==0)
- sum = sum/2;
- else
- //星期1-6,花一半
- sum = sum/2;
- day++;
复制代码 你这样写是不是错了?星不星期天没有意义啊?都是Sun=Sun/2
修改后的代码如下:- while(sum<=100){
- //sum += 20;
-
- //星期日,花一半
- if(day%7==0)
- sum = (sum+20)/2;
- else
- //星期1-6,花一半
- sum = sum+20/2;
- day++;
-
- }
复制代码 可能存在理解不正确的地方!
作者: FFF 时间: 2013-10-29 14:34
你的是不是也存在错误?
每天都给40块了。
sun+=20
然后sun又在while里又sun=sun+20/2
作者: 星星点灯 时间: 2013-10-29 14:48
/*
题目:
小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。
每到周日,小明拿到钱后会把所有零花钱花掉一半。
请编程计算,从周一开始,小明需要多少天才能存够100元?
疑问:存够100元的时刻——是指最后那天拿到钱的时刻,还是花掉之后的时刻
如果是指花掉之后,程序如下:
*/
//demo.java
public class demo
{
public static void main(String[] args)
{
int sum=0;
int day=1;
while (sum<=100)
{
//星期天
if (day%7==0)
{
sum=sum+20;//星期天先得20,再花掉总数的一半
sum=sum/2;
} else {
sum=sum+10;//周一到周六
}
//System.out.println("今是第 "+day+" 天");
//System.out.println("截止到本日钱的总数为——"+sum);
if (sum==100) break;//如果最后一天恰好为100,就跳出循环,否则会多循环一次
day++;
}
System.out.println("存入100的所需的天数为: "+day);
}
}
作者: 星星点灯 时间: 2013-10-29 14:49
- /*
- 题目:
- 小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。
- 每到周日,小明拿到钱后会把所有零花钱花掉一半。
- 请编程计算,从周一开始,小明需要多少天才能存够100元?
- 疑问:存够100元的时刻——是指最后那天拿到钱的时刻,还是花掉之后的时刻
- 如果是指花掉之后,程序如下:
- */
- //demo.java
- public class demo
- {
- public static void main(String[] args)
- {
- int sum=0;
- int day=1;
- while (sum<=100)
- {
- //星期天
- if (day%7==0)
- {
- sum=sum+20;//星期天先得20,再花掉总数的一半
- sum=sum/2;
- } else {
- sum=sum+10;//周一到周六
- }
- //System.out.println("今是第 "+day+" 天");
- //System.out.println("截止到本日钱的总数为——"+sum);
- if (sum==100) break;//如果最后一天恰好为100,就跳出循环,否则会多循环一次
- day++;
- }
- System.out.println("存入100的所需的天数为: "+day);
- }
- }
复制代码
作者: 李文帅 时间: 2013-10-29 14:55
不好意思,我直接复制他的代码,只改了下面的代码,忘了把上面的代码去掉,马虎了....:lol
作者: 李文帅 时间: 2013-10-29 14:59
纠正一下,上面的代码应该是下面的,刚才直接复制楼主的代码,只改了下面的代码,忘了把 'sum +=20;'这句代码给注释掉,抱歉- 01.public class Test{
- 02. public static void main(String args[]){
- 03.
- 04. int sum = 0;
- 05. int day = 1;
- 06.
- 07. while(sum<=100){
- 08. // sum += 20;
- 09.
- 10. //星期日,花一半
- 11. if(day%7==0)
- 12. sum = (sum+20)/2;
- 13. else
- 14. //星期1-6,花一半
- 15. sum = sum + 20/2;
- 16. day++;
- 17. }
- 18.
- 19. System.out.println(day--);
- 20. }
- 21.}
复制代码
作者: wuchuang1992 时间: 2013-10-29 15:29
谢谢,嘿嘿 ,我会了
作者: 帅气的冬瓜 时间: 2013-10-29 17:20
怎么看着好像是 day++呢
作者: To 时间: 2013-10-30 00:07
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
作者: 李新辉 时间: 2013-10-30 16:00
苦逼的版主……
辛苦了……
作者: --_.Is’攸稀 时间: 2013-10-30 16:17
这样代码应该是错的,在星期1-6,花一半,不应那样写,要不都一样了,应该是sum=sum-10;因为他只是每天花掉了10块而已
作者: 李新辉 时间: 2013-10-30 16:32
本帖最后由 李新辉 于 2013-10-30 17:15 编辑
- class DayNum
- {
- public static void main(String[] args)
- {
- int sum=0;
- int day=0;//存完钱才是天数day++ ===> day=0+1,所以这里初始化为0
- int M=20;
- while(sum<100)//当小明存够100就跳出循环
- {
- if(day%7==0)
- sum=(sum+M)/2;//周日存入20元并花掉全部的一半
- else
- sum+=M/2;//周一到周六存入10元
- day++;
- }
- System.out.println("当小明存够100元是第 "+day+" 天");
- }
- }
复制代码 这是我按照楼主的要求写的代码
看楼主能否看明白……
大家多交流……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |