软件工程个人作业07

题目

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

            本数                  折扣

             2                     5%

             3                     10%

             4                     20%

             5                     25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。 设计算法能够计算出读者购买一批书的最低价格。

设计思想

打折扣时,每十本书即有规律可循,所以采用取余的方法,计算最合适的价格。在此算法中,购买8本时比较特殊,4+4组合最合适,即买两套4本不同的书。具体计算价格时是以5个一循环(五本不同折扣最大),取余五剩下的本数按不同书计算,相加即为最合适的价格。

代码实现

package lowest_price_1;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Lowest_price {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for(;;)                              //按照用户需求无限循环
        {
            int num=0,judge=0;double price=0;
            Scanner in=new Scanner(System.in);
            System.out.println("请输入要买书的个数:");
            
            try                              //捕捉输入错误
            {
                num=in.nextInt();
             }
            catch(InputMismatchException e)
            {
                System.out.println("输入不合法!请输入整数!");
                judge=1;
            }
            int temp=num/5;                  //计算总价时,五本不同的书最总价格最低
            if(num%10==1)                    //购买总数每十本,有规律
            {
                price=temp*5*8*0.75+8;
            }
            else if(num%10==2)
            {
                price=temp*5*8*0.75+8*2*0.95;
            }
            else if(num%10==3)
            {
                price=temp*5*8*0.75+8*3*0.9;
            }else if(num%10==4)
            {
                price=temp*5*8*0.75+8*4*0.8;
            }else if(num%10==5)
            {
                price=temp*5*8*0.75;
            }else if(num%10==6)
            {
                price=temp*5*8*0.75+8;
            }else if(num%10==7)
            {
                price=temp*5*8*0.75+8*2*0.95;
            }else if(num%10==8)
            {
                price=temp*4*8*0.8+8*4*0.8;    //8本及余数为8本的4,4购买最合适
            }else if(num%10==9)
            {
                price=temp*5*8*0.75+8*4*0.8;
            }else if(num%10==0)
            {
                price=num*8*0.75;
            }
            if(judge!=1)
                System.out.println("最低价格是:"+price);
            
            System.out.print("继续输入请按任意键,退出请按q:");
            String s=in.next();
            if(s.equals("q"))
                System.exit(0);
            else
                continue;    
            in.close();
        }
    }
}

实现截图

个人总结

本次程序较为简单,看出规律即可,但考虑问题的想法还不够周全,再接再厉。

原文地址:https://www.cnblogs.com/love528/p/5546045.html