设计思想:
根据计算找到以下规律,用总数除以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+"元");
}
}
实现截图:
个人总结:
一些编程问题要先手动计算,寻找规律,再进行演绎推理。