WooYun 发表于 2020-11-15 21:50

【Java】Java初级算法基础 ,"可乐瓶数"问题

/**
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐, 那么要买多少瓶可乐,够28人喝? 假如是50人,又需要买多少瓶可乐?
*
*/
public class Cola {

        public static void main(String[] args) {
                //第一种方法:
                colaFirstMethod(28);
                colaFirstMethod(50);
                System.out.println("--------------华丽的分割线--------------");
                //第二种方法:
                colaSecondMethod(28);
                colaSecondMethod(50);

        }

        private static void colaFirstMethod(int man) {
                int colaCount = man - man / 3; //总瓶数减去可以换的瓶数得到只需要购买的可乐数量
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
               
               
        }

        public static void colaSecondMethod(int man) {
                int drinkCount = 0;//记录喝掉的可乐数量,起始为0
                int emptyBottle = 0;//记录喝掉之后的空瓶子,起始为0
                int colaCount = 0;// 一共需要多少瓶可乐,起始为0
                while (drinkCount < man) {
                        colaCount++;// 需要一瓶可乐拿来喝掉
                        drinkCount++;// 计录喝的可乐数量
                        emptyBottle++;// 计算空瓶子
                        if (emptyBottle == 3) // 3个空瓶子换一瓶可乐
                        {
                                drinkCount++;// 再喝掉
                                emptyBottle = 1;// 空瓶子又多了一个了!
                        }
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
        }
}

gentledream 发表于 2020-11-15 22:34

每日学习,感谢大哥:keai

gentledream 发表于 2020-11-15 22:53

大哥第一种方法出来的正确吗

amose 发表于 2020-11-15 23:13

27人的时候第一种方法就错了

WooYun 发表于 2020-11-16 01:49

gentledream 发表于 2020-11-15 22:34
每日学习,感谢大哥

第一种错了,没有考虑周全,当所有的可乐数模除3等于0 时 , 表示已经没有空瓶子能兑换可乐了 所以要在买一瓶/**
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐, 那么要买多少瓶可乐,够28人喝? 假如是50人,又需要买多少瓶可乐?
*
*/
public class Cola {

        public static void main(String[] args) {
                //第一种方法:
                colaFirstMethod(27);
                colaFirstMethod(50);
                System.out.println("--------------华丽的分割线--------------");
                //第二种方法:
                colaSecondMethod(27);
                colaSecondMethod(50);

        }

        private static void colaFirstMethod(int man) {
               
                int colaCount = man - man / 3; //总瓶数减去可以换的瓶数得到只需要购买的可乐数量
                if(man% 3 == 0) { //条件成立时 表示没有空瓶子可以兑换可乐了
                        colaCount += 1;//需要在买一瓶
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
               
               
        }

        public static void colaSecondMethod(int man) {
                int drinkCount = 0;//记录喝掉的可乐数量,起始为0
                int emptyBottle = 0;//记录喝掉之后的空瓶子,起始为0
                int colaCount = 0;// 一共需要多少瓶可乐,起始为0
                while (drinkCount < man) {
                        colaCount++;// 需要一瓶可乐拿来喝掉
                        drinkCount++;// 计录喝的可乐数量
                        emptyBottle++;// 计算空瓶子
                        if (emptyBottle == 3) // 3个空瓶子换一瓶可乐
                        {
                                drinkCount++;// 再喝掉
                                emptyBottle = 1;// 空瓶子又多了一个了!
                        }
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
        }
}

WooYun 发表于 2020-11-16 01:50

amose 发表于 2020-11-15 23:13
27人的时候第一种方法就错了

感谢指正!{:1_893:}
/**
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐, 那么要买多少瓶可乐,够28人喝? 假如是50人,又需要买多少瓶可乐?
*
*/
public class Cola {

        public static void main(String[] args) {
                //第一种方法:
                colaFirstMethod(27);
                colaFirstMethod(50);
                System.out.println("--------------华丽的分割线--------------");
                //第二种方法:
                colaSecondMethod(27);
                colaSecondMethod(50);

        }

        private static void colaFirstMethod(int man) {
               
                int colaCount = man - man / 3; //总瓶数减去可以换的瓶数得到只需要购买的可乐数量
                if(man% 3 == 0) { //条件成立时 表示没有空瓶子可以兑换可乐了
                        colaCount += 1;//需要在买一瓶
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
               
               
        }

        public static void colaSecondMethod(int man) {
                int drinkCount = 0;//记录喝掉的可乐数量,起始为0
                int emptyBottle = 0;//记录喝掉之后的空瓶子,起始为0
                int colaCount = 0;// 一共需要多少瓶可乐,起始为0
                while (drinkCount < man) {
                        colaCount++;// 需要一瓶可乐拿来喝掉
                        drinkCount++;// 计录喝的可乐数量
                        emptyBottle++;// 计算空瓶子
                        if (emptyBottle == 3) // 3个空瓶子换一瓶可乐
                        {
                                drinkCount++;// 再喝掉
                                emptyBottle = 1;// 空瓶子又多了一个了!
                        }
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
        }
}

WooYun 发表于 2020-11-16 01:51

gentledream 发表于 2020-11-15 22:53
大哥第一种方法出来的正确吗

没有考虑周全,已经修改,感谢指正!
/**
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐, 那么要买多少瓶可乐,够28人喝? 假如是50人,又需要买多少瓶可乐?
*
*/
public class Cola {

        public static void main(String[] args) {
                //第一种方法:
                colaFirstMethod(27);
                colaFirstMethod(50);
                System.out.println("--------------华丽的分割线--------------");
                //第二种方法:
                colaSecondMethod(27);
                colaSecondMethod(50);

        }

        private static void colaFirstMethod(int man) {
               
                int colaCount = man - man / 3; //总瓶数减去可以换的瓶数得到只需要购买的可乐数量
                if(man% 3 == 0) { //条件成立时 表示没有空瓶子可以兑换可乐了
                        colaCount += 1;//需要在买一瓶
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
               
               
        }

        public static void colaSecondMethod(int man) {
                int drinkCount = 0;//记录喝掉的可乐数量,起始为0
                int emptyBottle = 0;//记录喝掉之后的空瓶子,起始为0
                int colaCount = 0;// 一共需要多少瓶可乐,起始为0
                while (drinkCount < man) {
                        colaCount++;// 需要一瓶可乐拿来喝掉
                        drinkCount++;// 计录喝的可乐数量
                        emptyBottle++;// 计算空瓶子
                        if (emptyBottle == 3) // 3个空瓶子换一瓶可乐
                        {
                                drinkCount++;// 再喝掉
                                emptyBottle = 1;// 空瓶子又多了一个了!
                        }
                }
                System.out.println(man + "人需要买" + colaCount + "个可乐!");
        }
}
页: [1]
查看完整版本: 【Java】Java初级算法基础 ,"可乐瓶数"问题