題目要求:
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、1、2、3、4表示,單獨一卷售價8元, 具體折扣如下所示:本數 折扣
2 5%
3 10%
4 20%
5 25%
根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。 設計算法能夠計算出讀者購買一批書的最低價格。 設計思想: 輸入輸出部分:輸入要買的書的數量然後經程序計算出最小的花費輸出結果。 因為購買書的數量不同其折扣價格也會不一樣而且購買同一本書不會享受打折,所以可以得出結論1.購買5本及以下時按照購買不同的本數購買時最省錢當鉤碼數量大於5本肯定會有重復購買的書籍,不防先計算一下購買6-9本的情況下選擇哪種購買方式更為省錢(舉例說明購買6本書有如下選擇A.5種書其中兩本一樣B.4種書其中有兩本0和兩本1C.3種書012各兩本)經過計算除了購買8本書的時候挑選5種書的價格比挑選4種書高以外其余都是挑選5種書最省錢,所以在1-9本書以內便有了最省錢的算法,至於10本及以上可以除以5來計算買幾次5種書剩下的余數在按5以內的公式計算。只有8本書的情況例外,所以要另行計算。 代碼實現: 1 import java.util.Scanner;
2 public class HarryPotent {
3 double Money;
4 int Bnumber;
5 static double Gongshi(int n)//5本以內的計算公式
6 {
7 double money=0;
8 if(n==1)
9 {
10 money=8;
11 }
12 else if(n==2)
13 {
14 money=(8*2*0.95);
15 }
16 else if(n==3)
17 {
18 money=(8*3*0.9);
19 }
20 else if(n==4)
21 {
22 money=(8*4*0.8);
23 }
24 else if(n==5)
25 {
26 money=(8*5*0.75);
27 }
28 return money;
29 }
30 static double Minmoney(int n)//5本以上的計算方法
31 {
32 double LMoney=0;
33 double number=0;
34 int YuShu=0;
35 if(n<=5)
36 {
37 LMoney=Gongshi(n);
38 }
39 else if(n%5==3)
40 {
41 n=n-8;
42 number=n/5;
43 LMoney=(number*8*5*0.75)+(8*4*2*0.8);
44 }
45 else
46 {
47 number=n/5;
48 YuShu=n%5;
49 LMoney=(number*8*5*0.75)+Gongshi(YuShu);
50 }
51 return LMoney;
52 }
53 @SuppressWarnings("unused")
54 public static void main(String[] args)
55 {
56 int Booknumber;
57 HarryPotent BOOK=new HarryPotent();
58 System.out.println("請輸入您想要購買的書的數量");
59 @SuppressWarnings("resource")
60 Scanner a=new Scanner(System.in);
61 Booknumber=a.nextInt();
62 if(Booknumber<0)
63 {
64 System.out.println("您的輸入有誤無法計算結果。。。");
65 }
66 else
67 {
68 System.out.println("您可以支付的最小額度為:"+Minmoney(Booknumber)+"元");
69 }
70 }
71
72 }
運行結果截圖:
輸入5本書:
輸入8本書:
隨便輸入一個正整數:
輸入負數:
實驗心得:
這次課堂小實驗還是比較簡單的,最起碼比灌水的哥們兒好找主要還是思路,這次的程序雖然實現了作業的要求但是並不健全比如說輸入非整型變量系統會報錯,收獲不是特別多就是再次加強了我對編程思想很重要的理解。還有就是對Java的部分語法又充實了一次。