购物系统(Java练习)

本文详细介绍了如何使用Java基础语法实现一个小型购物系统,涉及if判断、循环和switch选择语句。作者通过代码示例展示了如何处理用户输入、商品打折及找零功能,并强调了编程中的实践与优化重要性。
摘要由CSDN通过智能技术生成

目录

一、引言

二、问题描述

三、问题分析

四、代码与运行结果展示

五、功能复查及优化

六、结论

一、引言

        最近复习大一的JAVA基础语法知识if判断语句、循环语句和switch选择语句等等。偶然的一次练习中,发现一道题目很有意思,它对JAVA基础语法的综合性很强,接下来让我慢慢说明。

二、问题描述

  1. 问题标题:小型购物系统
  2. 问题要求:用户可以选择物品并输入购买的件数,并且每次选完一件物品都要询问是否继续                    购买,如果继续购买输入"y",不继续购买输入"n",物品打8折优惠,输出应付金                    额。
  3. 需求说明:循环输入商品编号,输出对应的商品价格;                                                                              T恤:245;        网球鞋:570;        网球拍:300
  4. 最终效果样图:

三、问题分析

问题一:  如何做到循环输入商品编号?

        分析:循环体内使用switch;

问题二:  如何判断是否继续购买并执行?

        分析:用if语句判断是否继续购买;

        if用户输入y,则if语句体将while的条件判断语句重复为true,继续购买;

        if用户输入n,则if语句体将while的条件判断语句改为false,否继续购买;

        if用户输入其他字符、符号或数字,则执行else语句,输出”请输入正确的指令“,并  默认继续购买;

问题三:  如何判断用户输入的是"y"或者"n"?

        分析:谈到这个问题,一些Java初学者的同学就会想当然的说,判断条件不就 是"scanner=="y"或者是"scanner=="n" " "吗?

        其实在这里还有一个小的知识点,要判断string类型的输入是否等于某个字符时, 需要用equals关键字,比如:scanner.equals("y");

四、代码与运行结果展示

代码展示:

package day_1;

import java.util.Scanner;

public class Dome8 {
    public static void main(String[] args) {
        //键盘录入,创建对象
        Scanner nub = new Scanner(System.in);
        //打印输出菜单
        System.out.println("************************");
        System.out.println("请选择购买商品的编号:");
        System.out.println("1、T恤     " +
                "2、网球鞋    " +
                "3、网球拍");
        System.out.println("************************");
        //定义while的条件判断语句的值flag
        boolean flag = true;
        //定义合计
        int sun=0;
        //循环输入商品编号和数量
        while (flag) {
            System.out.println("请输入商品编号:");
            //接收商品编号
            int nub1 = nub.nextInt();
            System.out.println("请输入购买数量:");
            //接收购买数量
            int nub2 = nub.nextInt();
            //switch选择购买商品的编号
            switch (nub1) {
                case 1:
                    sun+=245 * nub2;
                    System.out.println("T恤:245     " + "数量:" + nub2 + "     合计:" + sun);
                    break;
                case 2:
                    sun+=570 * nub2;
                    System.out.println("网球鞋:570     " + "数量:" + nub2 + "     合计:" + sun);
                    break;
                case 3:
                    sun+=300 * nub2;
                    System.out.println("网球拍:300     " + "数量:" + nub2 + "     合计:" + sun);
                    break;
                default:
                    System.out.println("请输入正确的序号");
                    break;
            }
            System.out.println("是否继续购买:(y/n)");
            //接收y/n
            String str = nub.next();
            //判断是否继续购买商品
            if (str.equals("y")) {
                //输入为y,继续购买商品,条件判断语句继续为true
                flag = true;
            } else if(str.equals("n")){
                //输入为n,否继续购买商品,条件判断语句改为false
                //计算打折后的价钱,并且将打折后的价钱存储在price变量中
                double price = sun * 0.8;
                System.out.println("折扣:0.8");
                //打印输出应付金额
                System.out.println("应付金额:" + price);
                flag = false;
            }else {
                System.out.println("请输入正确的指令!");
            }
        }
    }
}

 

 运行结果如图:

五、功能复查及优化

        在生活中,超市结账,饭店结账都是系统自动计算应该给顾客找零多少钱,或者还差多少钱,而在该系统中却没有体现该功能,放在实际生活中,增加了不少的人力劳动,以及成本;

        所以,该购物系统再次增加一个功能,通过用户实际支付的金额,计算要给用户找零多少,或者,还差多少钱,并输出;

代码展示:

package day_1;

import java.util.Scanner;

public class Dome8 {
    public static void main(String[] args) {
        //键盘录入,创建对象
        Scanner nub = new Scanner(System.in);
        //打印输出菜单
        System.out.println("************************");
        System.out.println("请选择购买商品的编号:");
        System.out.println("1、T恤     " +
                "2、网球鞋    " +
                "3、网球拍");
        System.out.println("************************");
        //定义while的条件判断语句的值flag
        boolean flag = true;
        //定义合计
        int sun=0;
        //循环输入商品编号和数量
        while (flag) {
            System.out.println("请输入商品编号:");
            //接收商品编号
            int nub1 = nub.nextInt();
            System.out.println("请输入购买数量:");
            //接收购买数量
            int nub2 = nub.nextInt();
            //switch选择购买商品的编号
            switch (nub1) {
                case 1:
                    sun+=245 * nub2;
                    System.out.println("T恤:245     " + "数量:" + nub2 + "     合计:" + sun);
                    break;
                case 2:
                    sun+=570 * nub2;
                    System.out.println("网球鞋:570     " + "数量:" + nub2 + "     合计:" + sun);
                    break;
                case 3:
                    sun+=300 * nub2;
                    System.out.println("网球拍:300     " + "数量:" + nub2 + "     合计:" + sun);
                    break;
                default:
                    System.out.println("请输入正确的序号");
                    break;
            }
            System.out.println("是否继续购买:(y/n)");
            //接收y/n
            String str = nub.next();
            //判断是否继续购买商品
            if (str.equals("y")) {
                //输入为y,继续购买商品,条件判断语句继续为true
                flag = true;
            } else if(str.equals("n")){
                //输入为n,否继续购买商品,条件判断语句改为false
                //计算打折后的价钱,并且将打折后的价钱存储在price变量中
                double price = sun * 0.8;
                System.out.println("折扣:0.8");
                //打印输出应付金额
                System.out.println("应付金额:" + price);
                System.out.print("实付金额:");
                //获取实付金额
                int nub4 = nub.nextInt();
                //判断实付金额是否大于应付金额
                if (nub4 >= price) {
                    //实付金额大于应付金额
                    //计算找零多少,并存储在sfu变量里面
                    double sfu = nub4 - price;
                    System.out.println("找零:" + sfu);
                    System.out.println("欢迎下次光临(^_^)");
                } else {
                    //实付金额小于应付金额
                    //计算还差多少,并存储在sfu变量里面
                    double sfu = price-nub4;
                    System.out.println("还差:" + sfu);
                    System.out.println("欢迎下次光临(^_^)");
                }
                flag = false;
            }else {
                System.out.println("请输入正确的指令!");
            }
        }
    }
}

 

效果展示:

六、结论

  1. 本系统对对于Java基础语法的综合性很强,其中包括了很重要的,循环语句,判断语句和选择语句,非常建议新手同学拿来练手用;
  2. 编写完本系统后,我又对编程又了新的认识,编程不是死板按照需求编写,应该结合实际情况与甲方进行商讨,从而优化代码,进而节约时间,节约成本,节约人力;此外,有一个好的编程习惯也很重要。代码的排版;标识符的命名要遵守见名思意的原则,方便后期对代码的优化;还有就是要有注释的习惯。
  3. 感谢大家阅读我的博客,对于Java的学习有什么好的建议和问题可以留在评论区大家一起讨论。
  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值