前两天看到其他童鞋帖子,自己动手写了一下。
package com.itheima;
public class Test011
{
/**
*28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,
*那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)
*
*思路:1、定义三个变量,num、count、sum。
* count用来记录瓶盖数
* sum用来记录总共得到多少瓶可乐
* num来记录买了多少瓶可乐,如果num<4,则需要买num瓶,
* 2、如果num>4,先买3瓶可乐,得到3个瓶盖,
* 可兑换1瓶可乐(判断sum == 人数),这时有1个瓶盖
* 3、再买1瓶(判断sum == 人数),可得到1个瓶盖,这时2个瓶盖
* 4、再买1瓶(判断sum == 人数),可得到1个瓶盖,这时3个瓶盖可兑换1瓶可乐(判断sum == 人数),兑换后这时1个瓶盖
* 5、再买1瓶(判断sum == 人数),可得到1个瓶盖,这时2个瓶盖
* 6、再买1瓶(判断sum == 人数),可得到1个瓶盖,这时3个瓶盖可兑换1瓶可乐(判断sum == 人数),兑换后这时1个瓶盖
* .....
* @param args
*/
public static void main(String[] args)
{
int personNum = 50;
int num = getNum(personNum);
System.out.println(num);
num = getNumMethod(personNum);
System.out.println(num);
}
//获取需购买的瓶数
public static int getNum(int PersonNum)
{
//如果人数少于4个人,则需要购买的瓶数就等于人数
if(PersonNum < 4)
return PersonNum;
//如果人数大于4,则先购买3瓶,定义三变量num、count、sun分别记录购买的可乐瓶数、瓶盖数、总共的可乐瓶数
int num = 3, count = 3, sum = 3;
for(int i = 0; sum != PersonNum; i++)
{
//瓶盖够3个就兑换一次
if(count ==3)
{
sum++;
count = 1;
continue;
}
num ++;
count ++;
sum ++;
}
return num;
}
//也可以将for循环换成while循环
public static int getNumMethod(int PersonNum)
{
//如果人数少于4个人,则需要购买的瓶数就等于人数
if(PersonNum < 4)
return PersonNum;
//如果人数大于4,则先购买3瓶,定义三变量num、count、sun分别记录购买的可乐瓶数、瓶盖数、总共的可乐瓶数
int num = 3, count = 3, sum = 3;
while(sum != PersonNum)
{
if(count ==3)
{
sum++;
count = 1;
continue;
}
num ++;
count ++;
sum ++;
}
return num;
}
}
|
|