题目:编写一个收银柜台收款程序,根据商品单价、购买数量以及收款金额计算并输出应收金额和找零;当总价小于200元时,不享受折扣;当总价大于或等于200元且小于500元时,享受9折优惠,当总价大于或等于500且小于1000元时,享受8折优惠。当总价大于或等于1000元时,享受6折优惠。需要考虑程序的异常情况!
分析:制作简易流程图,如下:
流程图
解析:
步骤一:定义类及 main方法
首先,使用自己的编程软件定于一个类,类名随意。并添加main()方法。
步骤二:读取控制台输入
在main()方法中,实例化Scanner类,并调用Scanner类的nextDouble()方法(因为金额会有小数,所以使用此方法)接收用户从控制台输入的商品单价、购买数量、收款金额,使用完毕后将scanner对象关闭,以释放资源(注意导入所需的包)。
读取控制台输入
代码如下:
public class Cashier {public static void main(String[] args) { //在控制台输入数据 Scanner scanner = new Scanner(System.in); System.out.println("请输入单价(RMB): "); double unitPrice = scanner.nextDouble(); System.out.println("请输入数量或公斤:"); double amount = scanner.nextDouble(); System.out.println("请输入金额(RMB):"); double money = scanner.nextDouble();
步骤三:计算所购商品总价并判断是否打折
(一) 计算商品的总价;
(二)使用if语句判断商品总价时候属于打折范畴。并进行打折分类计算;
计算所购商品总价并判断是否打折
代码如下:
//计算商品的价格(并进行舍入计算)double totalPrice = Math.round(unitPrice * amount); //总价格double discount = 0; //折扣价格double surplus = 0; //余额//使用if-else语句计算折扣价格if (totalPrice < 200) {surplus = money - totalPrice;} else if (totalPrice < 500 && totalPrice >= 200) { discount = totalPrice * 0.9;} else if (totalPrice < 1000 && totalPrice >= 500) { discount = totalPrice * 0.8;} else if (totalPrice >= 1000) { discount = totalPrice * 0.6;}
步骤四:计算找零并输出结果
(二) 计算打折后的应收金额;
(三) 将收款金额减去应收金额,即为找零;
(四) 输出应收金额和找零金额,若错误,直接输出错误信息
计算找零并输出结果
代码如下:
// 计算找零surplus = money - discount;if (surplus >= 0) {System.out.println("应收金额为:RMB " + Math.round(totalPrice) + "折扣金额为:RMB " + discount + ",找零为:RMB " + surplus);} else { System.out.println("输入有误,请重新输入!");
整个程序完整代码如下:
完整程序代码
文字版:
import java.util.Scanner;/*** 描述: * 编写一个收银柜台收款程序 * * @author 十三 * @create 2018-12-13 21:09 */public class Cashier { public static void main(String[] args) { //在控制台输入数据 Scanner scanner = new Scanner(System.in); System.out.println("请输入单价(RMB): "); double unitPrice = scanner.nextDouble(); System.out.println("请输入数量或公斤:"); double amount = scanner.nextDouble(); System.out.println("请输入金额(RMB):"); double money = scanner.nextDouble(); //计算商品的价格(并进行舍入计算) double totalPrice = Math.round(unitPrice * amount); //总价格 double discount = 0; //折扣价格 double surplus = 0; //余额 //使用if-else语句计算折扣价格 if (totalPrice < 200) { surplus = money - totalPrice; } else if (totalPrice < 500 && totalPrice >= 200) { discount = totalPrice * 0.9; } else if (totalPrice < 1000 && totalPrice >= 500) { discount = totalPrice * 0.8; } else if (totalPrice >= 1000) { discount = totalPrice * 0.6; } // 计算找零 surplus = money - discount; if (surplus >= 0) { System.out.println("应收金额为:RMB " + Math.round(totalPrice) + "折扣金额为:RMB " + discount + ",找零为:RMB " + surplus); } else { System.out.println("输入有误,请重新输入!"); } }}