`

喝汽水问题

阅读更多
package com.javaeye.aspnetdb;

/**
 * 
 * @author aspentdb 
 * @url	www.aspnetdb.iteye.com 
 * 问题描述:
 * 有1000瓶汽水,每喝完一并得到一个空瓶子,每3个空瓶子可以换1瓶汽水,
 * 喝掉以后又得到一个空瓶子,问总共能喝多少瓶汽水,最后还剩余多少个空瓶子。
 * 
 */
public class Drinks {


	public static void main(String[] args) {
		new Drinks().Method1(1000, 3);		
		new Drinks().Method2(1000, 4);
	}

	/**
	 * 
	 * @param iTotalNum 初始汽水的数量
	 * @param iRoleNum  空瓶子换汽水的规则
	 * 
	 * 此种方法是一边喝一边换
	 */
	public void Method1(int iTotalNum, int iRoleNum) {

		if(iRoleNum <= 0)
		{
			System.out.println("规则错误!");
			return;
		}

		int drinknum = 0;	//喝掉汽水的数量
		int emptyNum = 0;	//空瓶子的数量
		while(iTotalNum > 0) {
			iTotalNum --;
			drinknum ++;
			emptyNum ++;
			if(emptyNum % iRoleNum == 0)
			{
				iTotalNum ++;
				emptyNum -= 3 ;
			}
		}

		System.out.println("一共喝掉" + drinknum + ";还是" + emptyNum + ";个空瓶子");

	}

	/**
	 * 
	 * @param iTotalNum 初始汽水的数量
	 * @param iRoleNum  空瓶子换汽水的规则
	 * 
	 * 喝完所有汽水,再一起换汽水
	 */
	public void Method2(int iTotalNum, int iRoleNum) {

		if(iRoleNum <= 0)
		{
			System.out.println("规则错误!");
			return;
		}

		int drinknum = 0;						//喝掉汽水的数量
		int emptyNum = 0;						//空瓶子的数量
		
		while(iTotalNum > 0) {
			
			drinknum += iTotalNum;				//喝掉所有汽水
			emptyNum += iTotalNum;				//汽水变成空瓶子
			
			iTotalNum = emptyNum/iRoleNum;	    //空瓶子换新汽水
			emptyNum -= iTotalNum*3;		    //换掉当前的空瓶子
			
		}

		System.out.println("一共喝掉" + drinknum + ";还是" + emptyNum + ";个空瓶子");

	}

}

 问题来源和代码实现参考《Java编程那些事儿》

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics