一、实验题目:

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
                               本数                  折扣
                                   2                       5%
                                   3                       10%
                                   4                       20%
                                   5                       25%
根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。

 

二、设计思想

首先1-5本,按照如上折扣买最实惠。6-7时,按照5+1、2+5买最实惠,8时按照4+4买最实惠,9-10时5+4、5+5最实惠。依次类推,由题目规律可知10为循环。

三、实验代码

 1 import java.util.Scanner;
 2 public class BuyBook {
 3     public static void main(String[] args) {
 4         // TODO Auto-generated method stub
 5         Book b = new Book();
 6         b.setBookNumber();
 7         b.getBookWay();
 8     }
 9 
10 }
11 class Book
12 {
13     int number=-1;
14     int time1;//循环次数
15     int time2;
16     double money;//最实惠所需钱
17     
18     void setBookNumber()//输入需要购买书的数量
19     {
20         System.out.println("请输入需要购买书的数量");
21         while(number<0)//输入值不能小于0
22         {
23             Scanner l = new Scanner(System.in);
24             number = l.nextInt();
25         }
26         
27     }
28     
29     void getBookWay()//得到最优惠的书的购买方式
30     {
31         time1 = number/10;
32         time2 = number-time1*10;
33         if(time2 == 0)
34         {
35             money = time1*(8*5*0.75*2)+0;
36         }
37         else if(time2 == 1)
38         {
39             money = time1*(8*5*0.75*2)+1*8*1;
40         }
41         else if(time2 == 2)
42         {
43             money = time1*(8*5*0.75*2)+2*8*0.95;
44         }
45         else if(time2 == 3)
46         {
47             money = time1*(8*5*0.75*2)+3*8*0.9;
48         }
49         else if(time2 == 4)
50         {
51             money = time1*(8*5*0.75*2)+4*8*0.8;
52         }
53         else if(time2 == 5)
54         {
55             money = time1*(8*5*0.75*2)+5*8*0.75;
56         }
57         else if(time2 == 6)
58         {
59             money = time1*(8*5*0.75*2)+5*8*0.75+8;
60         }
61         else if(time2 == 7)
62         {
63             money = time1*(8*5*0.75*2)+5*8*0.75+2*8*0.95;
64         }
65         else if(time2 == 8)
66         {
67             money = time1*(8*5*0.75*2)+4*8*0.8*2;
68         }
69         else if(time2 == 9)
70         {
71             money = time1*(8*5*0.75*2)+5*8*0.75+4*8*0.8;
72         }
73         System.out.println("最低的价格为:"+money);
74     }
75 }

四、实验截图:

五、个人总结

对于这种类型的问题注意规律。