项目一家庭收支记账软件总结

  • .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-项目一家庭收支记账软件相关推荐

  1. Go 小项目1 - 家庭收支记账软件

    Go 小项目1 - 家庭收支记账软件 一)需求 1)模拟实现基于文本界面的<家庭记账软件> 2)该软件能够记录家庭的收入.支出,并能够打印收支明细表 二)编码 1)功能 1.完成主菜单的编 ...

  2. Java项目:家庭收支记账软件

    目录 前言 一.任务要求 二.实现代码 总结 前言 最近花了一个星期看了JAVA经典书籍<Java核心技术卷I>,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅 ...

  3. 项目一.家庭收支记账软件

    问题1: 关于跳出总循环for for(){switch(){}} 跳出循环的两种方法:第一种,定义条件i!=1,在跳出循环的选项下让i=1:第二种,定义label: for,在需要跳出条件的后面br ...

  4. 3.项目一(家庭收支记账软件)

    家庭收支记账软件 项目一:家庭收支记账软件 1. 项目演示 2. Utility工具类的说明 Utility工具类提供了一系列的方法,方便我们从控制台获取相关数据: 用户的选择(1-4):readMe ...

  5. Java项目一(案例):家庭收支记账软件

    Java项目一(案例):家庭收支记账软件 项目概述 软件功能 项目说明 涉及Java知识点 软件需求说明 程序代码示例 FamilyAccount.class文件 自定义Utility.class工具 ...

  6. golang项目----家庭收支记账软件

    家庭收支记账软件 实现基本功能(先使用面向过程,后面改成面向对象) 项目代码实现改进 面向过程源码 面向对象源码 utils包中 main包中 实现基本功能(先使用面向过程,后面改成面向对象) 编写文 ...

  7. [go学习笔记.第十一章.项目案例] 1.家庭收支记账软件项目

    一.基本介绍 1.项目开发流程说明 2.项目需求说明 目标: 模拟实现一个基于文本界面的<<家庭记账软件>> 掌握初步的编程技巧和调试技巧 主要涉及以下知识点 : (1).局部 ...

  8. GO学习项目---家庭收支记账软件

    主菜单功能实现: func (f *FamilyAccount) MainMenu() {for {fmt.Println("-----------家庭收支记账软件-----------&q ...

  9. go 家庭收支记账软件

    项目开发流程 项目需求说明 模拟实现基于文本界面的<家庭记账软件> 该软件能够记录家庭的收入.支出,并能够打印收支明细表 项目的界面 -------------家庭收支记账软件------ ...

最新文章

  1. 2022-2028年中国PET基膜行业市场发展规模及市场分析预测报告
  2. 菜鸟requireJS教程---2、基本知识
  3. [Java基础]Set集合概述和特点
  4. 什么是事务(Transaction)
  5. Linux 命令(111)—— alias 命令(builtin)
  6. springBoot中shiro与Redis整合的配置文件
  7. Futter基础第16篇: 实现单行文本框、多选框
  8. C++ Templates 学习历程一
  9. 服务器芯片组 硒武,不到两个月的服务器,武器炼化出这属性是什么水平?
  10. 基于热传导方程的高温作业专用服装设计(一)
  11. GA/GP中的适应度函数
  12. 不规则动词过去式和过去分词大表
  13. 一步一步教你做微博用户画像分析:Python微博爬虫+词云生成
  14. 阿里云 mysql 版本_阿里云数据库RDS MySQL版如何选择?
  15. Cobalt Strike 的 Beacon 使用介绍以及 Profile 文件修改Beacon内存教程
  16. 租酥雨的NOIP2018赛前日记
  17. 数据库(Mysql)的事物详解
  18. microsoft 365 E5申请过程收不到验证码的解决方案
  19. ES6读书笔记(下)
  20. 2019届华为实习生招聘

热门文章

  1. Tomcat配置通过域名访问
  2. vue2 mixins混入
  3. 【java数据科学】1.提取数据以及清洗数据
  4. 曲师大计算机系课程论文,曲师大论文要求式.doc
  5. 顺丰和菜鸟对用户数据寸土不让 战争平息需监管层
  6. 华为android能用几年,华为手机能用几年 一般智能手机能用多少年
  7. Python--获取电脑配置信息--完整代码及过程
  8. (二)Linux设备驱动的模块化编程
  9. Java 线程的几种状态及其切换的条件
  10. linux设置双屏强制设置分辨率,话说你们的双屏显示器是怎样设置的 尤其是外接显示器分辨率设置...