课堂练习之《哈利波特》

设计思想:

     根据计算找到以下规律,用总数除以5,余数为0时,按5本一组折扣25%算最便宜,当然还要考虑用户输入的为0时的情况;余数为1时,按其中一本原价,其他5本一组折扣25%算最便宜;余数为2时,按其中两本折扣5%,其余5本一组折扣25%算最便宜;余数为3时,如果总数为3本,按折扣10%,否则按其中八本四本一组按折扣20%,其余5本一组折扣25%算最便宜;余数为4时,按其中四本折扣20%,其余5本一组折扣25%算最便宜。

代码实现:

     import java.util.Scanner;

public class Dazhe {

   public  static void main(String []agrs){

      Scanner reader=new Scanner(System.in);

      System.out.println("请输入要买书的总数:");

      int sum=reader.nextInt();

      int shang=sum/5; //总数除5取商

      int yushu=sum%5; //总数除5取余

      double price=0;

      switch(yushu)     //按照余数分类

      {

      case 0:          //余数为0时

         if(sum==0)    //若输入为0,直接提示输入错误

         {

            System.out.println("输入错误!请重新输入!");

            break;

         }

         else       //否则按5本一组买

         {

            price=5*8*(0.75)*shang;

            break;

         }

      case 1:   //余数为1时

         price=8+shang*5*8*(0.75);   //有一本按原价算,其他按5本一组

         break;

      case 2: //余数为2时

          price=shang*5*8*(0.75)+2*8*(0.95); //其中两本按折扣5%算,其余按5本一组算

          break;

      case 3: //余数为3时

         if(sum==3)   //若为3本,则直接按10%的折扣算

         {

           price=3*8*(0.9);

           break;

         }

         else        //否则其中八本按四本一组折扣20%算,其余按5本一组算

         {

            price=(shang-1)*5*8*(0.75)+4*8*(0.8)*2;

            break;

         }

      case 4:  //余数为4时,其中四本按折扣25%算,其余按5本一组算

         price=shang*5*8*(0.75)+4*8*(0.8);

         break;

      }

      System.out.println("您最少需支付:"+price+"元");

   }

}

 

实现截图:

         

个人总结:

     一些编程问题要先手动计算,寻找规律,再进行演绎推理。

原文地址:https://www.cnblogs.com/jinpeigang/p/5542960.html