问题描述

循环输入商品编号和购买数量,当输入n时结账,结账时计算应付金额并且找零。

目录

  • 问题描述
    • (一)定义初始变量
    • (二)问题分析
      • (1)循环语句的选择
        • 1. for语句
        • 2. while语句
        • 3.do……while语句
      • (2)计算应付金额
      • (3)计算实付金额
      • (4)付款金额的输入及找零
    • (三)完整代码
    • (四)运行结果

(一)定义初始变量

serial:商品编号
num:第一次选择时的商品数量(无论哪个商品)
num1,num2,num3:再次选择时三个商品分别的数量
n:商品折扣
price1,price2,price3:三个商品分别的单价
total:未打折之前的总金额(应付金额)
total1,total2,total3:未打折之前三个商品分别的总金额
total_n:打折之后的总金额(实付金额)
pay:顾客付款金额
back:应找零金额
answer:是/否(继续购买商品)

由于需要键盘输入数据,所以引用Scanner sc=new Scanner(System.in); 所以开头也需要导入Scanner包,可以写import java.util.Scanner; 或者直接写import java.util.*;

import java.util.*;
public class Shopping {public static void main(String[] args) {int serial,num,num1=0,num2=0,num3=0,n;float price1=243,price2=486,price3=315;double total,total1=0,total2=0,total3=0,total_n,pay=0,back;String answer;Scanner sc=new Scanner(System.in);

(二)问题分析

要求实现循环输入商品编号和购买数量,由此可考虑前面部分整体的框架为循环语句。

(1)循环语句的选择

1. for语句

先判断条件是否为true,是则执行循环体,一般适用于已知循环次数。

2. while语句

先判断条件是否为true,是则执行循环体,一般适用于未知循环次数。

3.do……while语句

先执行一次循环体,再判断条件是否为true,是则继续执行循环体。

——由此可选择搭建 do……while 循环框架

     System.out.println("欢迎光临XX便利店,这位顾客您好");System.out.println("这是我们店里的火爆商品\n"+"1、T恤  2、网球鞋  3、网球拍");System.out.println("*******************************");do {System.out.println("请输入商品编号");serial=sc.nextInt();System.out.println("请输入购买数量");num=sc.nextInt();System.out.println("是否要继续购买(建议理性消费)?(y/n)");answer=sc.next();}while(answer.equals("y"));

(2)计算应付金额

1.选择了不同的商品编号,对应不同的单价,因此采用选择语句。该题用 if 语句或 switch 语句均能实现,这里采用了switch语句,路线比较明确。

2.由于是循环选择语句,各个商品的数量应是叠加的,所以商品1的数量num1应写成num1+=num或num1=num+num1。

3.num是第一次进入循环体时键盘输入的数量,所以可以不赋初值。num1是再次选择时若选到了商品1才会键盘输入的值,因此应事先赋予初值0。total1也如此。其他商品以此类推。

     switch (serial){case 1:num1+=num;total1=price1*num1;System.out.println("T恤¥"+price1+"  数量:"+num1+"  合计:"+total1);break;case 2:num2+=num;total2=price2*num2;System.out.println("网球鞋¥"+price2+"  数量:"+num2+"  合计:"+total2);break;case 3:num3+=num;total3=price3*num3;System.out.println("网球拍¥"+price3+"  数量:"+num3+"  合计:"+total3);break;default:System.out.println("别挑我们店里没有的");}

把这块代码插入到上述代码的中间空格处,即完成了前面部分的编写。

(3)计算实付金额

利用数学逻辑公式即可计算打过折之后的金额。

     System.out.println("请选择折扣(1—10)");n = sc.nextInt();total=total1+total2+total3;total_n=total*n*0.1;System.out.println("折扣:"+n+"  应付金额:"+total+"  实付金额:"+total_n);

(4)付款金额的输入及找零

考虑到会出现付款金额小于应付金额的情况,因此采用一个 while 语句进行提醒。

     System.out.println("请输入付款金额");pay = sc.nextInt();while(pay<total_n) {System.out.println("钱不够");System.out.println("请再次输入付款金额");pay = sc.nextInt();break;}back = pay - total_n;System.out.println("应找零:" + back);System.out.println("欢迎下次光临");

整合一下完整的程序就写出来了。

(三)完整代码

import java.util.*;
public class Shopping {public static void main(String[] args) {int serial,num,num1=0,num2=0,num3=0,n;float price1=243,price2=486,price3=315;double total,total1=0,total2=0,total3=0,total_n,pay=0,back;String answer;Scanner sc=new Scanner(System.in);System.out.println("欢迎光临XX便利店,这位顾客您好");System.out.println("这是我们店里的火爆商品\n"+"1、T恤  2、网球鞋  3、网球拍");System.out.println("*******************************");do {System.out.println("请输入商品编号");serial=sc.nextInt();System.out.println("请输入购买数量");num=sc.nextInt();switch (serial){case 1:num1+=num;total1=price1*num1;System.out.println("T恤¥"+price1+"  数量:"+num1+"  合计:"+total1);break;case 2:num2+=num;total2=price2*num2;System.out.println("网球鞋¥"+price2+"  数量:"+num2+"  合计:"+total2);break;case 3:num3+=num;total3=price3*num3;System.out.println("网球拍¥"+price3+"  数量:"+num3+"  合计:"+total3);break;default:System.out.println("别挑我们店里没有的");}System.out.println("是否要继续购买(建议理性消费)?(y/n)");answer=sc.next();}while(answer.equals("y"));System.out.println("请选择折扣(1—10)");n = sc.nextInt();total=total1+total2+total3;total_n=total*n*0.1;System.out.println("折扣:"+n+"  应付金额:"+total+"  实付金额:"+total_n);System.out.println("请输入付款金额");pay = sc.nextInt();while(pay<total_n) {System.out.println("钱不够");System.out.println("请再次输入付款金额");pay = sc.nextInt();break;}back = pay - total_n;System.out.println("应找零:" + back);System.out.println("欢迎下次光临");}
}

(四)运行结果

Java 实现循环输入商品编号和购买数量,当输入n时结账,结账时计算应付金额并且找零相关推荐

  1. c#实现循环输入商品编号和购买数量,结账时应付金额并找零

    循环输入商品编号和购买数量,系统自动计算每种商品的价钱(单价X数量),并累加总金额. 当输入n时结账(假设享受8折优惠)结账时,根据折扣计算应付金额,输入实付金额,并找零 下面展示一些 内联代码片. ...

  2. php商品在最少购买,ECSHOP给商品设置最少购买数量的方法

    ecshop后台默认没有给商品设置最小起订量或者最少购买量的功能.保哥在使用ecshop做一个商城时,要给商品设置包邮来吸引买家,但又不想买家购买一件产品也给包邮,这样很容易亏本.对于价值较高的商品有 ...

  3. 「Python条件结构」根据输入数量对应的折扣率计算应付金额

    功能要求 编写一个控制台应用程序,实现商场打折促销商品.购买某种商品根据购买数量(x)的不同给予不同的折扣.从键盘中输入用户购买商品的数量和商品的单价,根据用户输入的购买商品的数量及该商品的单价,输出 ...

  4. Redis 购物车 - 删除商品与更新购买数量

    @ApiOperation(value = "从购物车中删除商品", notes = "从购物车中删除商品", httpMethod = "POST& ...

  5. for语句java n_JAVA循环for语句

    Goodsgoods=newGoods();goods.setGoodsId(goodsId);goods.setGoodsNum(goodsNum);goodsList.add(goods);Sys ...

  6. 跪求c语言购买图书编程,C语言书费已知单价输入数量求总价 给定每种图书购买的数量,编程计算应付的总费用...

    满意答案 q33445566 2013.05.06 采纳率:55%    等级:11 已帮助:8868人 //使用循环语句依次读取就可以了 #include int main() { int n=0, ...

  7. java入库_Java实现商品的查找、添加、出库、入库操作完整案例

    本文实例讲述了Java实现商品的查找.添加.出库.入库操作.分享给大家供大家参考,具体如下: package com.jredu.oopch08; public class Goods1 { priv ...

  8. 现要为某一个销售部门编写一个程序管理约100种商品。要求设计一个结构体类型来描述商品,每种商品包括商品编号(如A001)、商品名称、商品销售量和商品销售额等信息,并编写以下函数···········

    原题:现要为某一个销售部门编写一个程序管理约100种商品.要求设计一个结构体类型来描述商品,每种商品包括商品编号(如A001).商品名称.商品销售量和商品销售额等信息,并编写以下函数: 1.编写一个函 ...

  9. Python第十四次课堂作业(类和对象):商品类增加购买功能

    题目 在上次作业的基础上增加购买等交互 代码 # 商品类 # 用户类(父类) # 普通用户类(子类) # VIP用户类(子类) # 管理员类(子类) # 商家类 # 商品类 # 异常信息类 # 自定义 ...

最新文章

  1. HDU 4300 Clairewd’s message
  2. 吃透这套架构演化图_从零搭建Web网站也不难!
  3. 类的主动使用与被动使用等
  4. GTADIR check object exist in another system
  5. think-in-java(9)接口
  6. Swift封装 滑出式导航栏
  7. Linux基础(9)--延时与时间
  8. Android开发 GradientDrawable详解
  9. 要不要做独立站系统?做了有什么用?
  10. Flex+BlazeDs+Java的教程及Demo
  11. sublime自定义snippet代码片段
  12. 假设检验(Hypothesis Testing)
  13. Excel自动化报表制作
  14. 网络架构及其演变过程
  15. web前端之幻灯片(二)--自动播放
  16. 达林顿管,达林顿管原理
  17. HTML中支持qlv文件格式吗,qlv格式怎么播放,格式工厂不支持qlv
  18. 使用Nero 7 刻录DVD镜像文件(Linux,Window的iso文件)
  19. DEVOPS架构师 -- 03Kubernetes进阶实践
  20. 神经网络一般训练次数,神经网络训练时间多长

热门文章

  1. 使用IDEA插件反编译jar包文件
  2. ZIP压缩包下载总结
  3. 发送邮件(@163.com)
  4. 医学院校教师备课系统的信息安全性研究
  5. 快递查询 教你一个方法使用物流单号查询物流信息
  6. 单点自平衡立方体相当于有几个自由度?自平衡自行车有几个自由度?独轮车有几个自由度?
  7. 014 Unbox failed! RequestError: Error: getaddrinfo ENOENT raw.githubusercontent.com raw.githubuserco
  8. Mac安装truffle框架时出现✓ Preparing to download box ✖ Downloading Unbox failed! Error: connect的解决方法
  9. @开发者:个推小程序消息推送解决方案来了
  10. ChatGPT 之父传奇:8岁学编程,16岁出柜,37岁颠覆科技圈,网友:“天选 CEO!”...