IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java 实现循环输入商品编号和购买数量,当输入n时结账,结账时计算应付金额并且找零 -> 正文阅读

[Java知识库]Java 实现循环输入商品编号和购买数量,当输入n时结账,结账时计算应付金额并且找零

问题描述

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

(一)定义初始变量

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知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:03:50  更:2021-08-04 11:04:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 4:09:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码