java小项目:简单的收入明细记事本,超级简单(不涉及数据库,通过字符串来记录)

一、效果

二、代码

2.1   Acount类

package com.demo1;public class Acount {public static void main(String[] args) {String details = "收支\t账户金额\t收支金额\t说    明\n";  //通过字符串来记录收入明细int balance = 10000;boolean loopFlag = true;//控制循环结束while (loopFlag){System.out.println("\n---------------------记账-----------------\n");System.out.println("                   1 收支明细");System.out.println("                   2 登记收入");System.out.println("                   3 登记支出");System.out.println("                   4 退    出\n");System.out.print("                   请选择(1-4):");char selection = Utility.readMenuSelection();//通过工具类获取用户的选择switch (selection){case '1':System.out.println("-----------------当前收支明细记录-----------------");System.out.println(details);System.out.println("--------------------------------------------------");break;case '2':System.out.print("本次收入金额:");int amount1 = Utility.readNumber();System.out.print("本次收入说明:");String desc1 = Utility.readString();balance += amount1;details += "收入\t" + balance + "\t\t" +amount1 + "\t\t" + desc1 + "\n";System.out.println("---------------------登记完成---------------------");break;case '3':System.out.print("本次支出金额:");int amount2 = Utility.readNumber();System.out.print("本次支出说明:");String desc2 = Utility.readString();balance -= amount2;details += "支出\t" + balance + "\t\t" +amount2 + "\t\t" + desc2 + "\n";System.out.println("---------------------登记完成---------------------");break;case '4':System.out.print("确认是否退出(Y/N):");char yn = Utility.readConfirmSelection();if (yn == 'Y') loopFlag = false;break;}}}
}

2.2  工具类  Utilit

package com.demo1;import java.util.Scanner;
/**Utility工具类:将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。*/
public class Utility {private static Scanner scanner = new Scanner(System.in);/**用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。*/public static char readMenuSelection() {char c;for (; ; ) {String str = readKeyBoard(1);c = str.charAt(0);if (c != '1' && c != '2' && c != '3' && c != '4') {System.out.print("选择错误,请重新输入:");}elsebreak;}return c;}/**用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。*/public static int readNumber() {int n;for (; ; ) {String str = readKeyBoard(4);try {n = Integer.parseInt(str);break;} catch (NumberFormatException e) {System.out.print("数字输入错误,请重新输入:");}}return n;}/**用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。*/public static String readString() {String str = readKeyBoard(8);return str;}/**用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。*/public static char readConfirmSelection() {char c;for (; ; ) {String str = readKeyBoard(1).toUpperCase();c = str.charAt(0);if (c == 'Y' || c == 'N') {break;} else {System.out.print("选择错误,请重新输入:");}}return c;}private static String readKeyBoard(int limit) {String line = "";while (scanner.hasNext()) {line = scanner.nextLine();if (line.length() < 1 || line.length() > limit) {System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");continue;}break;}return line;}
}

2.3  类的结构

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

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

相关文章

2023.1.19 关于 Redis 事务详解

目录 Redis 事务对比 MySQL 事务 MySQL 事务 Redis 事务 Redis 事务原子性解释 Redis 事务详解 执行流程 典型使用场景 Redis 事务命令 WATCH 的使用 WATCH 实现原理 总结 阅读下文之前建议点击下方链接了解 MySQL 事务详解 MySQL 事务详解 Redis 事务对比 MySQL 事…

[陇剑杯 2021]jwt

[陇剑杯 2021]jwt 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;昨天&#xff0c;单位流量系统捕获了黑客攻击流量&#xff0c;请您分析流量后进行回答&#xff1a; 该网站使用了______认证方式。&#xff08;如有字母请全部使用小写&#xff09…

C++ 设计模式之备忘录模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是备忘录模式 &#xff08;第17种模式&#xff09; 备忘录模式&#xff08;Meme…

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体 文章目录 【C语言】- 设置控制台标题、编码、文字颜色、大小和字体1 - 设置控制台标题2 - 设置控制台编码3 - 设置控制台字体和大小参考链接 1 - 设置控制台标题 因为要用到 Windows API&#xff0c;所以需要包含头文件…

apache下的CollectionUtils工具类

目录 依赖 这个包下 1.安全检查指定的集合是否为空 2.空 安全检查指定的集合是否为空 3.(String)类型中的集合-并集 union 4.(String)类型中的集合-交集 5.(String)类型中交集的补集 6.(String)类型中差集&#xff08;扣除&#xff09; 7.containsAny()方法&#xff1…

UI组件在线预览,程序员直呼“不要太方便~”

一、介绍 以往大家如果想查看组件的使用效果&#xff0c;需要打开DevEco Studio构建工程。现在为了便于大家高效开发&#xff0c;文档上线了JS UI组件在线预览功能&#xff0c;无需本地构建工程&#xff0c;在线即可修改组件样式等参数、一键预览编译效果。程序员直呼&#xff…

可视化k8s页面(Kubepi)

Kubepi是一个简单高效的k8s集群图形化管理工具&#xff0c;方便日常管理K8S集群&#xff0c;高效快速的查询日志定位问题的工具 随便在哪个节点部署&#xff0c;我这里在主节点部署 docker pull kubeoperator/kubepi-server docker run --privileged -itd --restartunless-st…

Webpack5入门到原理14:生产模式介绍

生产模式是开发完成代码后&#xff0c;我们需要得到代码将来部署上线。 这个模式下我们主要对代码进行优化&#xff0c;让其运行性能更好。 优化主要从两个角度出发: 优化代码运行性能 优化代码打包速度 生产模式准备 我们分别准备两个配置文件来放不同的配置 1. 文件目录…

求助帖(setiosflags)的左右对齐问题:

以后自己要注意&#xff0c;如果两个相互矛盾的标志同时被设置&#xff0c;如先设置 setiosflags(ios::right)&#xff0c;然后又设置 setiosflags(ios::left)&#xff0c;那么结果可能就是两个标志都不起作用。因此&#xff0c;在设置了某标志&#xff0c;又要设置其他与之矛盾…

RabbitMQ-生产者可靠性

一、生产者重连 1、概念 由于网络波动导致客户端无法连接上MQ&#xff0c;这是可以开启MQ的失败后重连机制。 注意&#xff1a; 是连接失败的重试&#xff0c;而不是消息发送失败后的重试。 2、开启配置 spring:rabbitmq:template:retry:enabled: true # 是否启用重试机制ma…

尝试计算π的值,并统计π的小数部分中每个数字出现的次数,当所有数字出现次数相等时停止计算

from mpmath import mp # 设置π的精度 mp.dps 100000 # 设置所需精度 # 初始化计数器 digit_counts [0] * 10 # 开始尝试计算并统计 for i in range(1, mp.dps 1): # 获取当前精度的π值 pi_str str(mp.pi)[2:] # 跳过"3." # 统计各数字出现次数 …

【RabbitMQ】RabbitMQ安装与使用详解以及Spring集成

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《RabbitMQ实战》。&#x1f3af;&#x1f3af; &am…

java实现红黑树

红黑树 红黑树是一种自平衡二叉查找树&#xff0c;其中每个节点都有一个颜色属性&#xff0c;颜色为红色或黑色。它的特性保证了树在插入和删除操作后仍然保持大致的平衡&#xff0c;使得查找操作能够在对数时间内完成。以下是红黑树的一些基本性质&#xff1a; 每个节点是红…

JS 数组对象的 34 种官方用法

数组&#xff08;Array&#xff09;作为 JavaScript 位列第一的对象&#xff0c; 其重要性可见一般&#xff0c;在这里就让我们来详细的扒一扒数组对象都有哪些方法&#xff0c;它们分别能对数组做什么。 一、数组是什么 官方对于 Array&#xff08;数组&#xff09;对象的解释…

面试题16.15.珠玑妙算

前言 这两天突然发现力扣上还是有我能写出来的题的&#xff0c;虽说都是简单级别的&#xff08;以及一道中等的题&#xff09;&#xff0c;但是能写出来力扣真的太开心了&#xff0c;&#xff08;大佬把我这段话当个玩笑就行了&#xff09;&#xff0c;于是乎&#xff0c;我觉…

C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(20)——列表&#xff08;List&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/124094382 编写软件&#xff08;大软件称为系统&#xff09;与盖大楼一个道理。 假设咱们现在需要盖一座名为“天梯大厦”的…

kubernetes工作负载-DamonSet

一、DemonSet的介绍 1、什么是DemonSet DaemonSet 控制器是用来保证在所有节点上运行一个 Pod 的副本当有节点加入集群时&#xff0c; 也会为他们新增一个 Pod。 当有节点从集群移除时&#xff0c;这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 简而言之…

进入docker容器,vi: command not found

问题描述&#xff1a; 进入docker容器&#xff0c;查看文件执行vim 命令&#xff0c;报错 vim: command not found。搜索解决方案&#xff0c;说执行一下 apt-get install vim命令&#xff0c;然后又报错 Unable to locate package vim。 解决&#xff1a; 1.执行 npt-get up…

YOLOv3:算法与论文详细解读

【yolov1&#xff1a;背景介绍与算法精讲】 【yolo9000&#xff1a;Better, Faster, Stronger的目标检测网络】 目录 一、YOLOv3概述二、创新与改进三、改进细节3.1 多尺度特征3.2 不同尺度先验框3.3 完整的网络结构3.3 Darknet-53主干网络3.4 残差网络3.4.1 恒等映射3.4.2 网络…

git提交代码到远端仓库的方法详解

一、何为git git就是版本控制器&#xff0c;就比如说你新建了一个git文件夹&#xff0c;里面用于存放你的C语言实习报告&#xff0c;现在要用git对该文件夹进行接管。当你修改了你的C语言实习报告点击保存之后&#xff0c;就用git的相关命令&#xff0c;提交给git&#xff0c;让…