·书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
本数 折扣
2 5%
3 10%
4 20%
5 25%
·根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
·设计算法能够计算出读者购买一批书的最低价格。
设计思想:
首先前5本书的折扣肯定是全部买折扣最低。然后从第6本到第9本时。
第六本:5加1
第七本:5加2
第八本:4加4
第九本:5加4
所以只需要将所需要买的书除以5之后,然后将余数加上5和这几个相比较,最特殊的自然是8本的时候,然后在计算。
代码实现:
import java.util.Scanner; public class BuyBook { public static void main(String[] args) { // TODO Auto-generated method stub @SuppressWarnings("resource") Scanner sc = new Scanner(System.in); System.out.println("请输入需要购买书本的数量:"); int booknumber = sc.nextInt(); int num=booknumber%5;//除5求余数 double price=0; switch(num) { case 0://买的数量刚好为5的倍数 price=booknumber*8*0.75; break; case 1://买的数量除5余1 price=(booknumber-1)*8*0.75+8; break; case 2://买的数量除5余2 price=(booknumber-2)*8*0.75+2*8*0.95; case 3://买的数量除5余3 if(booknumber==3) { price=3*8*0.9; } else { price=(booknumber-8)*8*0.75+2*4*8*0.8; } break; case 4://买的数量除5余4 price=(booknumber-4)*8*0.75+4*8*0.8; break; } System.out.println("购书的最低价格为"+price); } }
实现截图:
个人总结:
这次作业主要是思想方法到位了就行了,找到解决的算法之后就好做了。在坐的过程中switch语句中每个case忘记加break了,所以计算出来是错的。