P335_0334韩顺平Java_零钱通介绍

news2024/11/16 19:27:09

目录

  • P335_0334韩顺平Java_零钱通介绍
  • 代码
    • 过程编程
    • OOP(Object-Oriented Project)
  • 参考资料

P335_0334韩顺平Java_零钱通介绍

  1. 先完成显示菜单,并可以选择。
  2. 完成零钱通明细。
  3. 完成收益入账。
  4. 消费。
  5. 退出。

PS:判断时尽量用不正确的条件去过滤,用正确条件过滤太繁琐

在这里插入图片描述

代码

过程编程

package smallchange;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChange {
    public static void main(String[] args) {
        boolean loop = true;
        Scanner scanner = new Scanner(System.in);

        String key = ""; // enter string

        String details = "----------- Details -----------";
        String exit = new String();

        double money = 0;
        double balance = 0;
        Date date = null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm");

        String note = "";

        do {
            System.out.println("\n\n\n=========== Menu ===========");
            System.out.println("\t\t# 1 Details.");
            System.out.println("\t\t# 2 Income.");
            System.out.println("\t\t# 3 Consume.");
            System.out.println("\t\t# 4 Exit.");
            System.out.print("# Please enter your selection(1~4):");
            key = scanner.next();

            switch (key) {
                case "1":
                    System.out.println(details);
                    break;
                case "2":
                    while (true) {
                        System.out.print("# The account of income is:");
                        money = scanner.nextDouble();
                        if (money <= 0) {
                            System.out.println("# Error, The account of income need greater than 0!");
                        } else {
                            break;
                        }
                    }
                    balance += money;
                    date = new Date();
                    details += "\nIncome: +" + money + "\tTime:" + sdf.format(date) + "\tBalance:" + balance;
                    break;
                case "3":
                    while (true) {
                        System.out.print("# The account of consume is:");
                        money = scanner.nextDouble();
                        if (money <= 0 || money > balance) {
                            System.out.println("# Error, The account of consume need greater than 0 and less than " + balance);
                        } else {
                            break;
                        }
                    }
                    balance -= money;
                    System.out.print("# The description of consume is:");
                    note = scanner.next();
                    details += "\nConsume: -" + money + "\tTime:" + sdf.format(date) + "\tBalance:" + balance + "\tNote:" + note;
                    break;
                case "4":
//                    enter in
                    while (true) {
                        System.out.println("# Are sure you want exit?(y\\n)");
                        exit = scanner.next();
                        if (exit.equals("y") || exit.equals("n")) {
                            break;
                        } else {
                            System.out.println("# Error, please enter again!");
                        }
                    }
//                    exit or not
                    if (exit.equals("y")) {
                        loop = false;
                        System.out.println("=========== Exit ===========");
                    } else if (exit.equals("n")) {
                        continue;
                    }
                    break;
                default:
                    System.out.println("# Error, please enter your selection again!");
            }
        } while (loop);
    }

}

OOP(Object-Oriented Project)

package smallchange;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class SmallChangeOOP {

    private boolean loop = true;
    private final Scanner scanner = new Scanner(System.in);

    private String key = ""; // enter string to select function.

    private String details = "----------- Details -----------";

    private String exit = "";// enter y\n to exit

    private double money = 0;
    private double balance = 0;
    private Date date = null;
    private SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm");

    private String note = "";

    public void mainMenu() {
        do {
            System.out.println("\n=========== Menu ===========");
            System.out.println("\t\t# 1 Details.");
            System.out.println("\t\t# 2 Income.");
            System.out.println("\t\t# 3 Consume.");
            System.out.println("\t\t# 4 Exit.");
            System.out.print("# Please enter your selection(1~4):");
            key = scanner.next();

            switch (key) {
                case "1":
                    this.details();
                    break;
                case "2":
                    this.income();
                    break;
                case "3":
                    this.consume();
                    break;
                case "4":
                    this.exit();
                    break;
                default:
                    System.out.println("# Error, please enter your selection again!");
            }
        } while (loop);
    }

    public void details() {
        System.out.println(details);
    }

    public void income() {
        while (true) {
            System.out.print("# The account of income is:");
            money = scanner.nextDouble();
            if (money <= 0) {
                System.out.println("# Error, The account of income need greater than 0!");
            } else {
                break;
            }
        }
        balance += money;
        date = new Date();
        details += "\nIncome: +" + money + "\tTime:" + sdf.format(date) + "\tBalance:" + balance;
    }

    public void consume() {
        while (true) {
            System.out.print("# The account of consume is:");
            money = scanner.nextDouble();
            if (money <= 0 || money > balance) {
                System.out.println("# Error, The account of consume need greater than 0 and less than " + balance);
            } else {
                break;
            }
        }
        balance -= money;
        System.out.print("# The description of consume is:");
        note = scanner.next();
        details += "\nConsume: -" + money + "\tTime:" + sdf.format(date) + "\tBalance:" + balance + "\tNote:" + note;
    }

    public void exit() {
        //                    enter in
        while (true) {
            System.out.println("# Are sure you want exit?(y\\n)");
            exit = scanner.next();
            if (exit.equals("y") || exit.equals("n")) {
                break;
            } else {
                System.out.println("# Error, please enter again!");
            }
        }
//                    exit or not
        if (exit.equals("y")) {
            loop = false;
            System.out.println("=========== Exit ===========");
        }
    }
}

package smallchange;

public class Test {
    public static void main(String[] args) {
        SmallChangeOOP smallChangeOOP = new SmallChangeOOP();
        smallChangeOOP.mainMenu();
    }
}

参考资料

[1] 【零基础 快速学Java】韩顺平 零基础30天学会Java
[2]
[3]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BEV学习---LSS4-模型训练

主要借鉴如下链接&#xff1a; https://blog.csdn.net/m0_51579041/article/details/140746160 测试命令如下&#xff0c;均已跑通&#xff1a; # 验证集iou计算&#xff1a; python main.py eval_model_iou mini -bsz1 --nworkers0 --gpuid0 --modelf./model/model525000.pt…

【CSS/HTML】圣杯布局和双飞翼布局实现两侧宽度固定,中间宽度自适应及其他扩展实现

前沿简介 圣杯布局和双飞翼布局是前端重要的布局方式。两者的功能相同&#xff0c;都是为了实现一个两侧宽度固定&#xff0c;中间宽度自适应的三栏布局。 圣杯布局来源于文章In Search of the Holy Grail,双飞翼布局来源于淘宝UED。 两者的实现方式有差异&#xff0c;但是都…

Java文件上传同时传入JSON参数

前言 此篇文章用于解决一个接口内同时完成文件的上传及JSON参数的传入(生产环境已验证); 1.准备接口 import cn.cdjs.vo.UserVO; import cn.hutool.json.JSONUtil; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFi…

黑马头条day4 自媒体文章自动审核

阿里云内容安全调用 其实这个接口调用不是很难 但是需要花钱 就没买 我开了按量计费 但是还是不行 所以就没测试 于是尝试自己写返回成功值 效果不好 后来发现不如直接在函数里边取消调用文字和图片审核 这样更简单 远程调用与降级处理 这里有个bug调试了好久 第一个就是总…

C++面试题第一弹

TCP、UDP区别及使用场景 从TCP和UDP的特点来看&#xff0c;连接性&#xff0c;可靠性&#xff0c;以及面向字节流还是数据报来说。 区别&#xff1a; 连接性&#xff1a;TCP面向连接&#xff0c;而UDP无连接。对TCP来说&#xff0c;在数据传输之前&#xff0c;通信双发需要…

gradle镜像配置

当我们在Android Studio中新建项目或者打开已有项目时&#xff0c;会下载gradle文件&#xff0c;当使用官方的下载源时很慢&#xff0c;经常会下载失败&#xff0c;国内我们可以使用腾讯或者阿里的镜像&#xff0c;一般下载速度很快。 一、gradle下载地址 官网地址&#xff1…

02——springboot2——热部署

什么是热部署 简单说就是你程序代码修改了&#xff0c;现在要重新启动服务器才能加载刚刚新写的代码&#xff0c;如果每次修改代码都要重新启动服务器&#xff0c;这样就真的太麻烦了&#xff08;运行一些稍微较大的项目&#xff0c;运行时间是很长的&#xff0c;所以每次修改…

docker - 镜像操作(拉取、查看、删除)

文章目录 1、docker search --help&#xff08;用于显示 Docker 搜索命令的帮助信息&#xff09;2、docker pull&#xff08;拉取镜像&#xff09;3、docker images (查看镜像)3.1、docker images --help&#xff08;用于显示 Docker 镜像管理相关命令的帮助信息&#xff09;3.…

【C++】——vector深度剖析模拟实现

低头赶路&#xff0c;敬事如仪 目录 1、模拟vector 1.1底层结构 1.2构造析构 1.3尾插扩容 1.4迭代器 1.5增删查改 1.6模拟中的注意事项 2、vector模拟补充 2.1迭代器区间构造问题 2.2memcpy深浅拷贝问题 2.3动态二维数组的模拟及遍历 1、模拟vector 想要模拟实现自…

即梦PixelDance:从追赶到领跑,一跃成为全球AI竞赛的领航者!

今年2月份&#xff0c;OpenAI发布了全新的文生视频模型Sora&#xff0c;那一次的发布&#xff0c;成功开启了AI视频生成的ChatGPT时刻。 看到Sora的发布视频&#xff0c;我相信有很多小伙伴和我一样被深深得震撼了&#xff01; 只需一个指令就可以生成一段逼近真实的视频&…

NBOUND 2024:与AI 一起推动业务增长

在2024年&#xff0c;我们的企业有幸参加了INBOUND大会&#xff0c;这是HubSpot为期三天的动态会议&#xff0c;专注于探讨营销、销售和人工智能领域的最新趋势和策略。作为HubSpot的合作伙伴&#xff0c;我们在这里不仅学习和分享&#xff0c;更见证了如何通过AI推动增长的无限…

【DAY20240926】智能时隙选择器

文章目录 要点元模型和本地模型的关系lstm模型更新Q-learning选择策略&#xff1a;ϵ-greedy动作空间&#xff08;&#x1d44e;&#x1d461;&#x1d456;−1∈{add,stay,minus}&#xff09;: 要点 The intelligent time slot selector is composed of a meta model on the …

提升并行效率的Python多处理模块指南

在Python中&#xff0c;multiprocessing 模块提供了强大的多进程支持&#xff0c;能够帮助我们充分利用多核CPU资源来实现并行计算。相比传统的多线程模式&#xff0c;Python的多进程模式更加高效&#xff0c;因为它可以避免Python的全局解释器锁&#xff08;GIL&#xff09;对…

一个超强大的Python数据探索工具

在数据分析的过程中&#xff0c;快速掌握数据集的基本特征是必不可少的一步。虽然 Pandas 提供了方便的 df.describe() 方法来生成数据摘要&#xff0c;但随着数据类型和分析需求的多样化&#xff0c;这一方法的局限性逐渐显现。Skimpy 作为一个新兴的 Python 包&#xff0c;旨…

基于mybatis-plus创建springboot,添加增删改查功能,使用postman来测试接口出现的常见错误

1 当你在使用postman检测 添加和更新功能时&#xff0c;报了一个500错误 查看idea发现是&#xff1a; Data truncation: Out of range value for column id at row 1 通过翻译&#xff1a;数据截断&#xff1a;表单第1行的“id”列出现范围外值。一般情况下&#xff0c;出现这个…

什么是Agent智能体?

你好&#xff0c;我是三桥君 近期&#xff0c;从各大厂商的年度大会到多个大型AI峰会&#xff0c;三桥君明显感受到行业风气的转变。这些会议不仅展示了众多AI Agent的实际应用案例&#xff0c;还有专家们对未来发展的预测。一时间&#xff0c;“Agent”这个词成为了热门词汇&…

Linux(含麒麟操作系统)如何实现多显示器屏幕采集录制

技术背景 在操作系统领域&#xff0c;很多核心技术掌握在国外企业手中。如果过度依赖国外技术&#xff0c;在国际形势变化、贸易摩擦等情况下&#xff0c;可能面临技术封锁和断供风险。开发国产操作系统可以降低这种风险&#xff0c;确保国家关键信息基础设施的稳定运行。在一…

多态的遗留问题以及C++中杂项,C++面试题

C面试题 1.什么是虚函数&#xff1f;什么是纯虚函数 虚函数&#xff1a;在类的继承中&#xff0c;基类中的函数前加virtual声明的函数就是虚函数。 虚函数实现了运行的多态&#xff0c;同一函数调用在不同对象中表现出不同的行为 纯虚函数&#xff1a;在基类中声明但没有实…

树莓派4B+UBUNTU20.04+静态ip+ssh配置

树莓派4B+UBUNTU20.04+静态ip+ssh配置 1.烧录Ubuntu镜像1.1选择pi 4b1.2选择ubuntu server (服务器版,无桌面)20.041.3选择sd卡1.4 点击右下角 NEXT ,编辑设置,输入密码,wifi选CN, 开启ssh1.5 烧录,依次点击“是”,等待完成2 烧录完成后装入树莓派,上电,等待系统完成配…

软件无线电3-微相E316和HackRF实现FM调制解调

前面介绍了基于Matlab、矢量信号器和HackRF One实现射频下的FM调制解调&#xff0c;今天分享的内容是用微相E316替代矢量信号器完成发射工作。注意本文仅用于科研和学习&#xff0c;私自搭建电台属于违法行为。 1.概述 微相E316和HackRF One实现FM调制解调测试框图如1所示&am…