黑马程序员技术交流社区

标题: 错误的程序,正确的答案,纠结 [打印本页]

作者: run_wind    时间: 2014-11-8 23:31
标题: 错误的程序,正确的答案,纠结
本帖最后由 run_wind 于 2014-11-8 23:40 编辑

28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?

这是一个黑马题,先是这一个小问,我写了个小程序,按照我前两分钟的思维,没能想到瓶盖换来可乐的瓶盖还能换可乐,所以写了个错误的程序,按照我的思路,应该是结果21。但是!答案对了,是19,现在让我纠结的是,我的程序为什么运行出来是这个结果呢???(声明,我的这个程序是个错误的,因为算不出第二问的正确答案)
  1. class coke
  2. {
  3.           public static void main(String[] args)
  4.           {
  5.                  int count = 0;//瓶数
  6.                  for (int x=0;x<28;x++)//x可乐
  7.                 {
  8.                        if(x%3==0)
  9.                        x++;

  10.                        count+=1;
  11.                  }
  12.            System.out.println(count);
  13.         }
  14. }
复制代码
经过验证,for (int x=1;x<=28;x++)  答案恢复正常,但是我有点弄不明白自己写的这个程序了,我没有考虑到瓶盖的瓶盖能换,为什么程序反而对了




作者: 逍遥小seng    时间: 2014-11-9 00:43
上面的count+=1,代表买一次。x%3==0;应该是可乐数量增加1,结果你瓶盖数+1,等于是for循环少循环了好多次,也就代表你少买好多次。结果也就对了。
其实这题可以理解为买3瓶送1瓶
class lianxi
{
        public static void main(String[] args)
        {
                int count = 0;//买可乐
                int x =0;//买三瓶送一瓶
                while (true)
                {
                        count ++;//开始买
                        if(count%3==0)
                                x++;
                        if((count+x)==28)
                                break;
                }
                System.out.println(“count=”+count);
        }
}
作者: 十指紧扣    时间: 2014-11-9 09:19
看不出什么问题!!!!!!!!!!!!!求解释!!!!!!




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