java尚硅谷 java基础第一个项目,记账软件

尚硅谷 java基础第一个项目之记账软件--“the method readKeyBoard is undefined“错误 记账软件软件分两个部分。分别是 Utility.java和FamilyAccount.java两个部分。 第一部分创建一个Utility工具类,很多瓜迷按视频操作的时候,会遇到一这样的错误:“The method readKeyBoard(int) is undefined for the type Utility”。 是因为缺少readKeyBoard方法。能运行的Utility.java如下: import java.util.Scanner; public class Utility{ 阅读详情

分为两个部分,第一部分创建一个Utility工具类,方便调用

/*
utility工具类:
将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
*/
import java.util.*;
public class Utility{
    private static Scanner scan = 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("选择错误,请重新输入:");
			}else{
				break;
			}
		}
		return c;
	}
//用于收入和支出金额的输入,该办法从键盘读取一个不超过4位长度的整数,并将其作为方法的返回值。

public static int readNumber(){
	int n;
	for (; ; ){
     String str = readKeyBoard(10);
	 try{
	 n = Integer.parseInt(str);
	 break;
	 }catch(NumberFormatException e){
      System.out.print("数字输入错误,请重新输入:");     
	 }
	}
	return n;
}
//用于收入和支出说明的输入,该方法从键盘读取一个不超过8位长度的字符串,并将其作为方法的返回值

public static String readString(){
	String str = readKeyBoard(20);
	return str;
}
//用于确认选择的输入,该方法从键盘读取'y'或者‘n’,并将其返回方法的值。
public static char readConfirmSelection(){
	char c;
	for (; ; ){
    String str = readKeyBoard(1).toUpperCase();//toUpperCase() 将用户输入字符转换为大写
	c = str.charAt(0);
	if (c == 'Y' || c == 'N'){
    break;
	}else{
	System.out.print("选择错误,请重新输入:");	
	}
	}
	return c;
}

private static String readKeyBoard(int limit){ //定义readKeyBoard方法,限制输入长度
	String line = "";
	while (scan.hasNext()){
    line = scan.nextLine();
	if (line.length() < 1 ||line.length() > limit){
		System.out.print("输入长度错误(不大于" + limit +")");
		continue;
	}
	else break;
	}
	return line;
}
}

第二部分程序主体

/*
练习项目1,记账软件
考察点:
1,变量的定义
2,基本数据类型的使用
3,循环语句
4,分支语句
5,方法声明,调用和返回值的接收
6,屏幕输出的格式控制

软件功能:
记录收入支出,并能输出收支明细

采用分级菜单的方式
主菜单如下
-------------收支记账软件-------------
1 收支明细
2 登记收入
3 登记支出
4 退出
请选择(1-4):
假设账户起始资金为10000
每次登记收入后,收入的金额增加到账户余额上,并记录本次收入的明细以便日后查询
每次登记支出后,支出的金额从到账户余额扣除,并记录本次支出的明细以便日后查询
查询收支明细时,显示所有的收入支出明细列表
*/

import java.util.*;
class Project1 {
public static void main(String[] args) {
//Scanner scan = new Scanner(System.in);
boolean mark = true;//定义一个变量mark,用于结束循环退出程序
int balance = 0;
String details = “收支\t\t账户余额\t收支金额\t备注\n”;
int money = 0;
int expanditure = 0;
String infomation = “”;
while (mark){
System.out.println("---------------------收支记录程序---------------------");
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.println("-------------------------登记收入-------------------------");
		System.out.print("	           请输入本次收入金额");
		money = Utility.readNumber();
		balance += money;
		System.out.print("	           请输入本次收入说明");
		infomation = Utility.readString();
        details += ("收入\t\t" + balance + "\t\t" + money + "\t\t" + infomation + "\n");
		System.out.println("----------------------------------------------------------");
		break;
	case '3':
		System.out.println("-------------------------登记支出-------------------------");
		System.out.print("	           请输入本次支出金额");
		expanditure = Utility.readNumber();
		if (expanditure > balance){
        System.out.println("支出超过余额,破产");
		break;
		}else{
		balance -= expanditure; 	 
		}
		System.out.print("	           请输入本次支出说明");
		infomation = Utility.readString();	
        details += ("支出\t\t" + balance + "\t\t" + expanditure + "\t\t" + infomation + "\n");
		System.out.println("----------------------------------------------------------");
		break;
	case '4':
		System.out.println("即将退出程序,请确认是否退出(Y/N)");
	    char exit = Utility.readConfirmSelection();
		if (exit == 'Y'){
        mark = false;
		}
		break;
	}     
}

}

}

Java项目一 家庭记账软件 目录概述项目要求代码 概述 项目来源:B站的尚硅谷java教程 这套视频总的来说还是很良心的,适合快速上手,但是要想深入了解原理的话,深度上还是差一点。 其实这套视频里涉及的练习也谈不上是项目,用到的都是java的基础语法,没什么技术栈。既然是初学java,就顺手写一下,养成好习惯。 项目要求 要求实现一个基于文本界面的记账软件,更详细的要求可以参考课程视频或给出的文档。 代码 //Utility.java import java.util.*; /** Utility工具类: 将不同的功能封装为方法,就 阅读详情

相关推荐

keyboard keyboard

keyboardkeyboardkeyboardkeyboardkeyboardkeyboardkeyboard

readKeyBoard

学java时的一个readKeyBoard函数 不加这一段会报错 在网上找了别人的转载过来 也希望方便大家查用 /* 定义一个readKeyBoard函数,用于从键盘读取参数限制长度的一行内容 */ private static String readKeyBoard(int limit) { String line = “”; while (scanner.hasNext()) { /* Scanner类中的hasNext方法读取的是boolean型的值,用于检测输

ttdxtt的博客 7295

DSP TMS320C6657中FFT函数的调用与具体使用方法

首先明确一点,C6678中FFT的函数形式为: N : length of FFT in complex samples ptr_x : pointer to complex data input ptr_w : pointer to complex twiddle factor ptr_y : pointer to complex output data brev : pointer to bit reverse table containing 64 entries n_min : should be

Kayboy的博客 3011

readKeyBoard()方法

### readKeyBoard: >从控制台读取用户输入的信息,并将其作为字符串返回给程序使用。 > >该方法是通过使用标准输入流(System.in)和缓冲输入流(Buffered Reader)实现的。

何解 598

开源项目 ruoyi-sso-oauth2(一)环境配置

Ruoyi若依实现单点登录SSO、oauth2认证

Xiaoweidumpb 9681

基于企业微信客服与GPT-3构建合规微信AI助手:从原理到部署实践

在人工智能与即时通讯融合的浪潮中,自然语言处理(NLP)与API集成成为构建智能对话系统的核心技术。其原理在于通过API网关接收用户输入,调用云端大语言模型进行处理,再将结果返回给用户,实现自动化交互。这项技术的核心价值在于将前沿AI能力无缝嵌入到日常高频应用场景中,极大地提升了客服自动化、智能问答与个性化服务的效率与体验。企业微信作为官方认可的企服平台,其开放的客服API接口为开发者提供了稳定、合规的消息通道,是连接微信生态与外部AI服务的理想桥梁。本文聚焦于如何利用企业微信客服API与OpenAI的GP

weixin_28727943的博客 626

尚硅谷Java学习project02客户信息管理软件分析

今天跟着宋老师将project02敲了一遍,有时候会跟不上老师的思路,会暂停想一会,里面比较绕的地方可能主要就是在交互的时候,再加上可能基础知识运用的不是特别熟练,接下来就将每个类进行分析一波。

m0_55895641的博客 1297

[pcie]gen6 下 L0p

000b~100b: 触发L0p 操作流程协商工作link width 到target link width.为111b:link width 硬件动态调整。硬件动态:Device control 3 register.target link width=111b当pcie链路检测到空闲状态时,设备可以主动进入L0p状态。L0p 是pcie gen6 新引入的链路状态,是L0的子状态。(5)LINK WIDTH:当LINK WIDTH CHANGE.cmd为Request时表示请求的链路宽度。

BIG_APPLE1的博客 1674

尚硅谷Javase项目一(家庭收支记账软件)

尚硅谷的B站视频中所做的项目一不关注后面的工具类怎么实现的具体功能,只能看到一部份原码。对于想了解的同学我这里写了他的工具类的readKeyBoard()方法。下面直接上源码` ##工具类:

m0_47711130的博客 1023

OpenWrt虚拟机磁盘扩容实战:从SquashFS到ext4的完整避坑指南

本文详细介绍了OpenWrt虚拟机磁盘扩容的完整流程,重点对比了SquashFS和ext4文件系统在扩容操作上的关键差异。通过五步安全迁移法和直接分区调整方案,帮助用户有效解决磁盘空间不足问题,同时提供高级技巧和故障排除指南,确保扩容过程顺利无坑。

weixin_29251131的博客 229

Python GUI编程:视频播放器(opencv、tkinter、PIL、ffpyplayer、threading)

用了几天做了一个视频播放器,搞了几个版本,开始想的是运用cv2模块把视频转化成一张张图片,然后再用ffpyplayer模块下的相关类来播放视频。但是,结果画面和视频的音频播放不同步(原因是cv2将转换得到的图片展示到tk上canvas,花费的时间多于每张图片应该展示的时间[1/fps])。后面看到ffpyplayer这个模块官网的介绍,发现这个模块可以得到视频播放时的图片,只不过这个图片是一个对象,我对这个不是很了解,到网上找了很久,终于找到了一篇文章,说可以利用PIL模块下的相关类,把上述这个对象转化成。

坚持不懈的大白的博客 3404

尚硅谷项目一谷粒记账软件

后,收入的金额应累加到基本金上,并记录本次收入明细,以便后续的查询。)后,支出的金额应从基本金中扣除,并记录本次支出明细,以便后续的查询。该软件能够记录家庭的收入、支出,并能够打印收支明细表。类型的变量来实现,其初始值为明细表的表头。方法中,参照收入和支出流程,实现“登记收入”功能。方法中,参照收入和支出流程,实现“登记支出”功能。提示:明细表格的对齐,可以简单使用制表符‘方法中,参照主流程图,实现程序主体结构。)时,将显示所有的收入、支出名细列表。项目采用分级菜单方式。

lcy57__的博客 1029

福建公共资源交易平台 portal-sign与响应Data解密逆向实录

本文分析了福建公共资源交易电子公共服务平台的接口加密机制。通过抓包和代码分析,发现请求头中的portal-sign由MD5算法生成,包含固定秘钥和排序后的参数拼接。响应数据采用AES-256-CBC加密,需使用特定Key和IV解密。文章详细介绍了签名生成规则、参数处理流程及加密常量定位方法,为接口对接提供了技术参考。整个过程展示了如何通过逆向工程还原前端加密逻辑,最终实现脱离浏览器环境的纯协议调用。

自成背后的博客 1157

尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)

金山打字通就是人与计算机交流的方式。人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。计算机语言有很多种。如:C 、C++、Java、Go、JavaScript、Python,Scala等。内容/*这是多行注释,可以声明多行注释的信息1、Java中的注释的种类:单行注释、多行注释、文档注释(Java特有)2、单行注释、多行注释的作用:①对程序中的代码进行解释说明②对程序进行调试3、注意:① 单行注释和多行注释声明的信息不参与编译。

Davina_yu的博客 7705

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(三)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(三)

宁波阿成的博客 524

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java基础项目一 谷粒记账软件

本章为java基础入门阶段项目1谷粒记账软件

weixin_46896961的博客 1102

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

尚硅谷java——项目一 家庭收支记账软件

class FamilyAccount{ public static void main(String[] args){ boolean isFlag = true; String details = "收支\t账户金额\t\t收支金额\t\t说 明\n"; int balance = 1000; while(isFlag){ System.out.println("----------------家庭收支记账软...

weixin_48711316的博客 940

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java学习【尚硅谷项目一家庭记账软件】

遇到的问题 1.把Utility加到项目中来 根据提示,在右下方选择GBK重载 2.编写程序 编写程序过程中,因为要调用Utility导致乱码,因为默认用utf-8写的,调用的格式是gbk 解决方法:复制到txt文本里面,同一把两个class文件改成utf-8后再复制回来。 最后cmd命令编译java文件的时候加上-encoding utf-8 代码: 工具类 import java.util.Scanner; /** Utility工具类: 将不同的功能封装为方法,就是可以直接通过调用方法使用

weixin_50356899的博客 625

尚硅谷 家庭收支记账软件

这个是没有文件储存的,过几天再写一个有文件储存的练练手。 需求说明: 主菜单类: public class FamilyAccount { public static void main(String[] args) { String details = "收支\t账户金额\t收支金额\t说 明\n"; int balance = 10000; boolean loopFlag = true; do

qq_41048982的博客 921

【尚硅谷-Java学习】【项目源码】家庭记账软件

Utility.java import java.util.Scanner; public class Utility { private static Scanner scanner = new Scanner(System.in); public static char readMenuSelection(){ char c ; for (; ; ) { String str = readKeyBoard(1); c = str.charAt(0); if (c!

cazenove的博客 906

尚硅谷java——个人收支记录软件

Utility.java import java.util.*; public class Utility{ private static Scanner scanner = new Scanner(System.in); public static char readMenuSelection(){ char c; for(; ; ){ String str

江晓狐的博客 913

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

最近花了一个星期看了JAVA经典书籍《Java核心技术卷I》,囫囵吞枣般看完,领略了其中大概内容,花时间看视频巩固一下,就去b站看了尚硅谷的《Java零基础入门教程》,自己完成了其中的项目一 ...

SherlockAdele_qc的博客 1740

【尚硅谷-Java学习】【项目】家庭记账软件

涉及知识点 变量的定义 基本数据类型的使用 循环语句 分支语句 方法声明、调用、返回值的接收 简单的屏幕输出格式控制 需求 实现 1.Utility工具类 将不同的功能封装成方法。 获取键盘输入内容:获取长度在指定范围的输入 用于界面菜单的选择:输入1–4选择功能 用于收入和支出金额的输入:输入不超过4位的数字 用于收入和支出的说明的输入:输入长度不超过8的说明 用于确认选择的输入:是(Y/y)否(N/n)确认退出 ...

cazenove的博客 685

Java实现家庭收支记账软件

题目来自于尚硅谷基础项目一,其中没有使用该项目提供的现成的方法 测试类 package test; import face.MainInterFace; import code.*; public class MainInterFace_Test { public static void main(String[] args) { MainInterFace testMain = new MainInterFace(); testMain.face();

qq_44312611的博客 400

项目一 Java基础 家庭记账系统

java基础,家庭记账系统。

qq_44867886的博客 267
上一篇: java中break与continue关键字的使用
下一篇: java数组练习1
wisdomcodeinside
博客等级 码龄7年 29粉丝 51原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值