问题:1瓶啤酒2元,4个瓶盖可以换1瓶啤酒,2个啤酒瓶可以换1瓶啤酒,问10元可以喝多少啤酒(不接受赊账)
原因:作为一个JAVA的初学者,总想敲个代码练一练手,今天就盯上了买啤酒的问题。
方案:4盖=1酒 2瓶=1酒,即可得4瓶+4盖=3酒;
若钱数并不是100元,而是RMB,则其最初能买到的啤酒数为num=rmbBeer=RMB/2;
则在更换环节,4瓶+4盖=3酒,则用rmbBeer/4
若rmbBeer<4,即为3 2 1 0,则算出可兑换的啤酒为4 1 0 0;
若rmbBeer>=4,则更换到的啤酒数目num2=rmbBeer/4*3,未更换的套装(啤酒瓶+盖)num3=rmbBeer%4,进入下 一轮更换。此时喝到的总的啤酒书就应该是num=num+num2,继续更换时用到的套装(啤酒瓶+盖)应该是num1=num2+num3;如此循环,知道最后剩余的套装(啤酒瓶+盖)=3 2 1 0;
package cn.itcast.exercise01;
/* 1. 4瓶啤酒瓶+4个盖子可换的3瓶啤酒 公式:换的啤酒书数=啤酒数/4*3
2.到最后未换的的啤酒数/4后的余数,即0 1 2 3
3.3瓶啤酒瓶+3个盖子可换4瓶啤酒
2瓶啤酒瓶+2个盖子可换1瓶啤酒
1瓶啤酒瓶+1个盖子不可换啤酒
*/
public class CountBeer {
public static void main(String[] args) {
int RMB;
System.out.println( rmbBeer(RMB = 10));
}
public static int rmbBeer(int RMB) {
int rmbBeer = RMB / 2; //最初的钱能买到的啤酒数
int num1 = rmbBeer;
int num=num1;
if (num1 > 3) {
do {
int beer1 = rmbBeer / 4; //每4瓶啤酒瓶+盖子可以换3瓶啤酒
int num2 = beer1 * 3; //4瓶啤酒能换到的啤酒数目
int num3 = rmbBeer % 4; //未换的啤酒数
num = num + num2; //最初和换到的啤酒总数
rmbBeer = num2 + num3; //换到的啤酒数+未换的啤酒书
if (rmbBeer == 3) {
num = num + 4;
} else if (rmbBeer == 2) {
num= num + 1;
} else {
}
}while (rmbBeer > 3) ;
return num;
}else if (rmbBeer == 3) {
num = num + 4;
} else if (rmbBeer == 2) {
num = num + 1;
} else {
}
return num;
}
}
如此算出10元能喝到15瓶啤酒;20元能喝到35瓶啤酒;100元能喝到195瓶啤酒
这样算下来买的啤酒越多越省钱,商家难道不赚钱啊?
作为一个刚刚起步的JAVA菜鸟,只是想着能找个问题敲敲代码,若有不妥,在此先道歉,更希望得到各位的指摘。