黑马程序员技术交流社区

标题: 购买可乐,求高人指点看哪里还有问题. [打印本页]

作者: 碎流    时间: 2014-12-27 18:57
标题: 购买可乐,求高人指点看哪里还有问题.
28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,
够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)

        思路:
        1 . 需要多少不一样的变量,可以喝到的可乐,总人数,购买的可乐数,瓶盖数.
                然后,我们可以从头开始购买可乐,知道能喝到的可乐和人数相同为止.
        2.通过集合,需要购买一次,或者瓶盖数多一次,都用集合记录起来,(可重复元素集合)
        3.开始从0瓶开始购买可乐.如果盖子够了三个,清空瓶盖集合,我们就要让可以喝的可乐多一瓶,然后再
        多一个盖子.
* */
public class Demo17 {
        public static void main(String[] args) throws IOException {
               
                int RenShu = 28;        //总人数.
               
               
                List PingGai = new ArrayList();  //瓶盖变量.
                List GouMai = new ArrayList();    //购买的可乐.
                int kele = 0;                    //实际能喝到的可乐, 也就是最后的实现.
                while(kele < RenShu)            // 当kele小于总人数时候开启循环
                {
                        if(PingGai.size() != 3)   //如果瓶盖不够三个,
                        {
                                GouMai.add(1);     //就要购买一次.
                                PingGai.add(1);     //瓶盖就会多一个.
                                kele ++;            //能喝到可乐多一次
                               
                        }
                        if(PingGai.size() == 3)   //如果瓶盖够三个
                        {
                                PingGai.clear();    //瓶盖就没有了.也没有买可乐.
                                kele ++;             //能喝到可乐多一次.
                                PingGai.add(1);      //瓶盖就多一个.
                        }
                }
                System.out.println("总人数是:" + RenShu + "需要购买的可乐数量为:" + GouMai.size());
        }
}


作者: 雪落纷飞    时间: 2014-12-27 22:26
  1. 思路;定义一个变量标记为瓶盖。当瓶盖不等于3的时候。继续买可乐。瓶盖数加1
  2.         但瓶盖等于三的时候就不在购买可乐,瓶盖数变为一
  3.         循环28次即可
  4. */
  5. public class Demo25
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 System.out.println(buyColes(28));
  10.         }
  11.         //可乐的购买方法
  12.         public static int buyColes(int num)
  13.         {
  14.                 int cap = 0;//瓶盖数
  15.                 int sum = 0;//购买可乐数
  16.                 //遍历所有人并记录和操作瓶盖数和可乐树
  17.                 for(int x=0;x<num;x++)
  18.                 {
  19.                         if(cap==3)//盖子够三个,不用买可乐,瓶盖归一
  20.                                 cap=1;
  21.                         else//盖子不够就可乐数加一,盖子加一
  22.                         {
  23.                                 sum++;
  24.                                 cap++;
  25.                         }
  26.                 }
  27.                 return sum;
  28.         }

  29. }
复制代码


这样应该代码简单了点,不用集合直接两个变量就可以




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