A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package itheima;

  2. public class While_demo
  3. {
  4.        
  5.         /*
  6.          * 题目:有28人喝汽水,已知每3个空瓶可换1瓶汽水,问最少买多少瓶汽水便可满足28人都喝上汽水
  7.          */
  8.        
  9.         public static void main(String[] args)
  10.         {
  11.                 //get();
  12.                 System.out.println("最少需要购买数量:"+get());
  13.         }
  14.         public static int get()
  15.         {
  16.                 int Num = 0;                //定义总瓶数;
  17.                 int count = 0;                //定义需要购买的数量;
  18.                 int key = 0;                //定义用空瓶换来的数量;
  19.                 int N = 28;                        //定义总人数
  20.                
  21.                 while(Num<N)                //只要总瓶数不到N,就要循环;
  22.                 {
  23.                         count++;
  24.                         if(count>=3)
  25.                         {
  26.                                 if(count%2==1)
  27.                                         key++;
  28.                         }
  29.                
  30.                         Num = count+key;
  31.                 }
  32.                 return count;
  33.         }
  34. }
复制代码

14 个回复

倒序浏览
只要改变N的值,便可得出任何人数的最少瓶数
回复 使用道具 举报
看过别人的代码,没研究过,不知道别人的代码能不能随便输入人数和兑换基数就可得出相应最少瓶数,我的就写了一点,改改的话能得到想要结果,但电脑电池没电了,明天再发个完整的看看,望各位大神能多多指导
回复 使用道具 举报
2*(n/ 3) + n% 3
这个最简单
回复 使用道具 举报
darkads 发表于 2014-10-10 18:33
2*(n/ 3) + n% 3
这个最简单

好像不对呀,如果n=3,2*(3/3)+3%3=2,也就是买两瓶就能够三个人喝?
回复 使用道具 举报
我的思路和楼主的一样
回复 使用道具 举报
darkads 中级黑马 2014-10-10 18:57:49
7#
waylent 发表于 2014-10-10 18:46
好像不对呀,如果n=3,2*(3/3)+3%3=2,也就是买两瓶就能够三个人喝?

这是一个脑筋急转弯:2瓶汽水够3个人喝
两个瓶盖,再向老板赊一瓶,得到瓶盖后,将3个瓶盖还给老板就行了
回复 使用道具 举报
  1. int i=0,j=0,k=0;
  2.         //通过循环,和瓶盖的逢三让i加一,然后j变为1
  3.         //最后获得需要购买的可乐数量
  4.                 while(i<num){
  5.                         i++;
  6.                         j++;
  7.                         k++;
  8.                         if(j%3==0){
  9.                                 i++;
  10.                                 j=1;
  11.                         }
  12.                 }
  13.                 //返回需要购买的可乐数量
  14.                 return k;
  15.         }
复制代码
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 Integer man = 28, drinked = 0, caps = 0, need = 0;
  3.                 while (drinked < man) {
  4.                         need++;
  5.                         drinked++;
  6.                         caps++;
  7.                         if (caps == 3) {
  8.                                 drinked++;
  9.                                 caps = 1;
  10.                         }
  11.                 }
  12.                 System.out.println(need);
  13.         }
复制代码
回复 使用道具 举报
waylent 发表于 2014-10-10 18:46
好像不对呀,如果n=3,2*(3/3)+3%3=2,也就是买两瓶就能够三个人喝?

确实可以,向老板佘一瓶,喝完后再把空瓶子还他
回复 使用道具 举报
waylent 发表于 2014-10-10 18:46
好像不对呀,如果n=3,2*(3/3)+3%3=2,也就是买两瓶就能够三个人喝?

确实可以,向老板佘一瓶,喝完后再把空瓶子还他
回复 使用道具 举报
这个有点像以前做过的应用题    k/3+k=28    只要算出来k就好了
回复 使用道具 举报
确实是个脑经急转弯问题
回复 使用道具 举报
http://bbs.itheima.com/thread-144613-1-1.html已经讨论了很多次了~~~
回复 使用道具 举报
public class dsad
{
    public static void main(String[] args) throws Exception
    {
            num(28);
            num(50);
           
    }
    public static void num(int n)
    {
            int num=n-n/3;
            System.out.println(num);
    }
}
这个简单吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马