day2-项目一家庭收支记账软件
项目一家庭收支记账软件总结
- .nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
- .next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。
(简单点说,next我只要字,nextLine我啥都要)
- .hasNext()表示是否有输入数据。
- .length()求一个字符串的长度
- .Integer.parseInt(): String 强制转换为 Int 类型
- .toUpperCase() :字符串中字符全部转为大写
- 异常控制
try {
// Integer.parseInt(): String 强制转换为 Int 类型
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
try catch 错误处理;
执⾏规则:⾸先执⾏try中的代码 如果抛出异常会由catch去捕获并执⾏ 如果没有发⽣异常 catch去捕获会被忽略掉 但是不管有没有异常最后都会执⾏。
try 语句使你能够测试代码块中的错误。
catch 语句允许你处理错误。
throw 语句允许你创建⾃定义错误。(抛出错误)
finally 使你能够执⾏代码,在 try 和 catch 之后,⽆论结果如何。
代码流程:
try{ 代码块;
代码 throw “字符” //抛出异常
}catch(参数){ //抓住throw 抛出的错误
// 处理错误并执⾏
}finally{ // ⽆论结果如何还是继续执⾏
}
工具类:
import java.util.Scanner;
/**
Utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
public class Tools {private static Scanner scan = new Scanner(System.in);/**用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。*/public static char readShuRu() {char c;for (; ; ) {//该方法从键盘读取一个不超过1位长度的整数String str = readKeyBoard(1);c = str.charAt(0);if (c != '1' && c != '2' && c != '3' && c != '4') {System.out.print("选择错误,请重新输入:");} else break;}return c;}/**用于收入和支出金额的输入。该方法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。*/public static int readJinE() {int n;for (; ; ) {String str = readKeyBoard(4);//异常控制try {// Integer.parseInt(): String 强制转换为 Int 类型n = Integer.parseInt(str);break;} catch (NumberFormatException e) {System.out.print("数字输入错误,请重新输入:");}}return n;}/**用于收入和支出说明的输入。该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值。*/public static String readShuoMing() {String str = readKeyBoard(8);return str;}/**用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。*/public static char readQueRen() {char c;for (; ; ) {// 字符串.toUpperCase() :字符串中字符全部转为大写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 (scan.hasNext()) {line = scan.nextLine();if (line.length() < 1 || line.length() > limit) {System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");continue;}break;}return line;}
}
源代码:
/*
家庭收支记录系统
*/public class FamilyNote{public static void main(String[] args){boolean isFlag = true;//用于记录用户的收入和支出的详情String noTes = "收 支\t账户金额\t收支金额\t说 明\n";//初始金额int monoy = 0; while(isFlag){System.out.println("---------家庭收支记录---------\n");System.out.println(" 1 收支明细");System.out.println(" 2 登记收入");System.out.println(" 3 登记支出");System.out.println(" 4 退 出\n");System.out.print(" 请输入(1——4):");char shuRu = Tools.readShuRu();switch(shuRu){case '1'://System.out.println(" 1 收支明细");System.out.println("---------家庭收支记录---------");//System.out.println("收 支\t账户金额\t收支金额\t说 明\n");System.out.println(noTes);System.out.println("------------------------------");break;case '2'://System.out.println(" 2 登记收入");System.out.println("本次的收入金额: ");int jinE1 = Tools.readJinE();System.out.println("本次的收入说明: ");String shuoMing1 = Tools.readShuoMing();//处理余额monoymonoy += jinE1;//处理notesnoTes += "收 入\t" + monoy + "\t\t" +jinE1 + "\t\t" + shuoMing1 + "\n";System.out.println("---------登记完成!---------\n");break;case '3'://System.out.println(" 3 登记支出");System.out.println("本次的支出金额: ");int jinE2 = Tools.readJinE();System.out.println("本次的支出说明: ");String shuoMing2 = Tools.readShuoMing();//处理余额monoyif(jinE2 <= monoy){monoy -= jinE2;}else{System.out.println("支出超出额度,支付失败!!!");}//处理notesnoTes += ("支 出\t"+monoy+"\t\t"+jinE2+"\t\t"+shuoMing2+"\n");break;case '4'://System.out.println(" 4 退 出");System.out.println("确认是否退出(Y/N):");char isChu = Tools.readQueRen();if(isChu == 'Y'){isFlag = false;}else{//break;}}}}
}
day2-项目一家庭收支记账软件相关推荐
- Go 小项目1 - 家庭收支记账软件
Go 小项目1 - 家庭收支记账软件 一)需求 1)模拟实现基于文本界面的<家庭记账软件> 2)该软件能够记录家庭的收入.支出,并能够打印收支明细表 二)编码 1)功能 1.完成主菜单的编 ...
- Java项目:家庭收支记账软件
目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...
- 项目一.家庭收支记账软件
问题1: 关于跳出总循环for for(){switch(){}} 跳出循环的两种方法:第一种,定义条件i!=1,在跳出循环的选项下让i=1:第二种,定义label: for,在需要跳出条件的后面br ...
- 3.项目一(家庭收支记账软件)
家庭收支记账软件 项目一:家庭收支记账软件 1. 项目演示 2. Utility工具类的说明 Utility工具类提供了一系列的方法,方便我们从控制台获取相关数据: 用户的选择(1-4):readMe ...
- Java项目一(案例):家庭收支记账软件
Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...
- golang项目----家庭收支记账软件
家庭收支记账软件 实现基本功能(先使用面向过程,后面改成面向对象) 项目代码实现改进 面向过程源码 面向对象源码 utils包中 main包中 实现基本功能(先使用面向过程,后面改成面向对象) 编写文 ...
- [go学习笔记.第十一章.项目案例] 1.家庭收支记账软件项目
一.基本介绍 1.项目开发流程说明 2.项目需求说明 目标: 模拟实现一个基于文本界面的<<家庭记账软件>> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点 : (1).局部 ...
- GO学习项目---家庭收支记账软件
主菜单功能实现: func (f *FamilyAccount) MainMenu() {for {fmt.Println("-----------家庭收支记账软件-----------&q ...
- go 家庭收支记账软件
项目开发流程 项目需求说明 模拟实现基于文本界面的<家庭记账软件> 该软件能够记录家庭的收入.支出,并能够打印收支明细表 项目的界面 -------------家庭收支记账软件------ ...
最新文章
- 2022-2028年中国PET基膜行业市场发展规模及市场分析预测报告
- 菜鸟requireJS教程---2、基本知识
- [Java基础]Set集合概述和特点
- 什么是事务(Transaction)
- Linux 命令(111)—— alias 命令(builtin)
- springBoot中shiro与Redis整合的配置文件
- Futter基础第16篇: 实现单行文本框、多选框
- C++ Templates 学习历程一
- 服务器芯片组 硒武,不到两个月的服务器,武器炼化出这属性是什么水平?
- 基于热传导方程的高温作业专用服装设计(一)
- GA/GP中的适应度函数
- 不规则动词过去式和过去分词大表
- 一步一步教你做微博用户画像分析:Python微博爬虫+词云生成
- 阿里云 mysql 版本_阿里云数据库RDS MySQL版如何选择?
- Cobalt Strike 的 Beacon 使用介绍以及 Profile 文件修改Beacon内存教程
- 租酥雨的NOIP2018赛前日记
- 数据库(Mysql)的事物详解
- microsoft 365 E5申请过程收不到验证码的解决方案
- ES6读书笔记(下)
- 2019届华为实习生招聘
热门文章
- Tomcat配置通过域名访问
- vue2 mixins混入
- 【java数据科学】1.提取数据以及清洗数据
- 曲师大计算机系课程论文,曲师大论文要求式.doc
- 顺丰和菜鸟对用户数据寸土不让 战争平息需监管层
- 华为android能用几年,华为手机能用几年 一般智能手机能用多少年
- Python--获取电脑配置信息--完整代码及过程
- (二)Linux设备驱动的模块化编程
- Java 线程的几种状态及其切换的条件
- linux设置双屏强制设置分辨率,话说你们的双屏显示器是怎样设置的 尤其是外接显示器分辨率设置...