学习java第九天 简单小项目

今天简单写了小项目

import java.math.*;
import java.util.*;
public class Project_array{// data 拿到外面 封装的方法 共享同一个变量// static 静态上下文只能直接访问静态的变量// 一旦加上static  代表当前的变量全局共享一份static Record[] data = {new Record("10月04日",new BigDecimal("-20.8"),"早午晚饭"),new Record("10月07日",new BigDecimal("-500.0"),"居家用品"),new Record("10月08日",new BigDecimal("10000.0"),"工资输入"),new Record("10月08日",new BigDecimal("-20.0"),"行车交通"),new Record("10月10日",new BigDecimal("-66.1"),"食品酒水"),new Record("10月15日",new BigDecimal("-7.5"),"食品酒水"),new Record("10月22日",new BigDecimal("-35.9"),"其他杂项"),new Record("10月31日",new BigDecimal("-2000"),"衣服饰品")};static String[] inData={"工资收入","奖金收入","兼职收入","其他收入","请选择收入明细"};static String[] outData={"食品酒水","物业用品","行车交通","其他杂项","请选择支出明细"};static Scanner sc = new Scanner(System.in);public static void main(String[] args){a:while(true){print("A 查看流水"+"\n"+"B 添加流水"+"\n"+"C 删除流水"+"\n"+"D 修改流水"+"\n"+"E 退出"+"\n"+"请选择");// 接收用户选项 调用方法String choice = sc.next();// A-D/*if(choice.equals("A")){chooseA();}*/// 参数的类型// jdk1.0 char byte short int// jdk5.0 enum 枚举// jdk7.0 Stringswitch(choice){case "A" :print("A:查看流水");chooseA();break;case "B":chooseB();break;case "C":chooseC();break;case "D":chooseD();break;default:print("输入错误重新输入");break;}}}// 封装一个方法 完成chooseA的逻辑public static void chooseA(){print("编码\t\t花销项目\t\t记录时间\t\t收支金额");BigDecimal sum=new BigDecimal("0");for(int i=0;i<data.length;i++){print(i+"\t\t"+data[i].getType()+"\t\t"+data[i].getTime()+"\t\t"+data[i].getMoney());sum=sum.add(data[i].getMoney());}print("收支余额:\t\t\t\t\t\t\t"+sum);}// 封装一个打印的方法public static void print(String str){System.out.println(str);}public static String TypeInfo(String[] str){for(int i=0;i<str.length-1;i++){print(i+":"+str[i]);}print(str[str.length-1]);int choice=sc.nextInt();return str[choice];}public static boolean contains(Record rr){for(int i=0;i<data.length;i++){if(data[i].getTime().equals(rr.getTime())&&data[i].getMoney().equals(rr.getMoney())&&data[i].getType().equals(rr.getType())){return true;}}return false;}public static void chooseB(){print("B:添加流水");print("请录入时间:");String time=sc.next();print("请选择收支明细【a:收入  b:支出】");String choice=sc.next();String type=TypeInfo(choice.equals("a")?inData:outData);print("请输入金额");String qian=sc.next();BigDecimal money=new BigDecimal(choice.equals("a")?qian:"-"+qian);Record rr=new Record(time,money,type);boolean flag=contains(rr);if(flag){print("该数据已经存在 添加失败!");}else{data=Arrays.copyOf(data,data.length+1);data[data.length-1]=rr;print("该数据添加成功!");}}public static void chooseC(){print("C:删除流水");chooseA();print("请输入要删除的流水编码");int number=sc.nextInt();if(number<0||number>data.length-1){print("该编码不存在 删除失败!");}else{//66 55 44 88//66 44 88 88//66 44 88System.arraycopy(data,number+1,data,number,data.length-number-1);data=Arrays.copyOf(data,data.length-1);print("删除成功!");}}public static void chooseD(){print("D:修改流水");chooseA();print("请输入要修改的流水编号");int number=sc.nextInt();if(number>data.length-1||number<0){print("该流水编号不存在");return;}else{print("请输入时间");String time=sc.next();print("请选择收支明细【a:收入  b:支出】");String choice=sc.next();String type=TypeInfo(choice.equals("a")?inData:outData);print("请输入金额");String qian=sc.next();BigDecimal money=new BigDecimal(choice.equals("a")?qian:"-"+qian);Record rr=new Record(time,money,type);boolean flag=contains(rr);if(flag){print("该数据已经存在 添加失败!");}else{print("数据更新之前的时间"+data[number].getTime()+"	数据更新之后的时间"+time+"\n数据更新之前的金额"+data[number].getMoney()+"		数据更新之后的金额"+money+"\n数据更新之前的类型"+data[number].getType()+"	数据更新之后的类型"+type);data[number].setTime(time);data[number].setMoney(money);data[number].setType(type);print("该数据修改成功!");}}}}
// 封装
class Record{//流水账private String time;//花销时间private BigDecimal money;//花销金额private String type;//花销项//构造方法的参数顺序看main方法里面已经创建好的对象的参数顺序public Record(String time, BigDecimal money, String type){this.time = time;this.money = money;this.type = type;}public void setTime(String time){this.time = time;}public String getTime(){return time;}public void setMoney(BigDecimal money){this.money = money;}public BigDecimal getMoney(){return money;}public void setType(String type){this.type = type;}public String getType(){return type;}}

选择A时打印出所有内容,并统计总和 sum(BigDecimal类型)

选择B时 进行添加内容,关系到数组的扩容Arrays.copyOf(1,2),以及数组的移动System.arraycopy(1,2,3,4,5);,判断数据是否存在,如果存在则返回并打印添加失败,不存在则添加成功

选择C时,进行删除对应编号的内容,并将数组删除缩容一个Arrays.copyOf(),数组移动System.arraycopy(); 很简单

选择D时,进行修改对于的编码,编码存在则修改 编码不存在则返回 打印出修改之前和修改之后的内容 

以下是测试

输入A时 

选择B时 B中无重复数据时添加成功

B中有重复数据时

 

选择C时,当编码不存在时

选择C时 编码存在时

 

选择D时 只测试修改后的数据

 

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

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

相关文章

零基础Java第八期:一维数组(1)

目录 一、 一维数组的基本概念 1.1. 什么是数组 1.2. 数组的创建及初始化 1.3. 数组的使用 二、数组是引用类型 2.1. 初始JVM的内存分布 2.2. 基本类型变量与引用类型变量 2.3. 引用变量的理解 2.4. null 三、数组的应用场景 3.1. 作为函数的参数 3.2. 作为函数的返…

你可能需要的多文档页面交互方案

前言 欢迎关注同名公众号《熊的猫》&#xff0c;文章会同步更新&#xff01; 在日常工作中&#xff0c;面对不同的需求场景&#xff0c;你可能会遇到需要进行多文档页面间交互的实现&#xff0c;例如在 A 页面跳转到 B 页面进行某些操作后&#xff0c;A 页面需要针对该操作做出…

成本决定未来——AIGC 下半场,高成本阻碍发展,我们该怎么办?

你好&#xff0c;我是三桥君 你最近有没有觉得工作中用到的那些 AI 工具好像越来越便宜了呢&#xff1f;这可不是偶然哦。 今天&#xff0c;三桥君就来聊聊为啥 AIGC 的下半场成本这么重要&#xff1f; 你想想看&#xff0c;咱平时工作已经够累了&#xff0c;要是再加上用那些贵…

算法Day-2

27. 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&am…

zotero下载、安装、翻译和显示无法安装插件“%S”的解决办法

文章目录 zotero下载和安装和翻译还有插件英文翻译软件遇到的问题 zotero下载和安装和翻译还有插件 Zotero从入门到精通第一期–如何省心省力翻译科研文献&#xff0c;这里面主要是使用小牛翻译的过程&#xff0c;输入产品密匙需要加入个人的账号密码进行sign in 英文翻译软件…

动态规划17:123. 买卖股票的最佳时机 III

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;123.…

递归神经网络(RNN)简介

递归神经网络简介 在本文中,我们将介绍神经网络的一种新的变体,即递归神经网络,也称为 (RNN),当数据是连续的时,如时间序列数据和文本数据,它比简单的神经网络效果更好。 什么是递归神经网络 (RNN)? 循环神经网络 (RNN) 是一种神经网络,其中上一步的输出作为当前…

Quarto ppt模板制作与Rstudio git连接

本篇记录下当前ppt演示中比较流行的quarto document使用情况以及Rstudio与git相连接的一些实操。 1 Quarto ppt模板制作 1.1 Quarto简介&#xff08;来自Kimi&#xff09; Quarto 是一个由 RStudio 的母公司 Posit 团队开发的开源科学和技术出版系统&#xff0c;它建立在 Pan…

计算机网络——传输层服务

传输层会给段加上目标ip和目标端口号 应用层去识别报文的开始和结束

upload-labs靶场Pass-01

upload-labs靶场Pass-01 分析 查看提示&#xff0c;提示如下 查看源码 function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传…

Java-类与对象-下篇

关于类与对象&#xff0c;内容较多&#xff0c;我们分为两篇进行讲解&#xff1a; &#x1f4da; Java-类与对象-上篇&#xff1a;————<传送门:Java-类与对象-上篇-CSDN博客> &#x1f4d5; 面向对象的概念 &#x1f4d5; 类的定义格式 &#x1f4d5; 类的使用 …

ubuntu 安装nginx

sudo apt-get update sudo apt-get install nginx sudo nginx -vsudo systemctl status nginx sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx#浏览器输入&#xff1a;http://192.168.31.181/#查看文件结构 cd /etc/nginx sudo cp nginx.…

Java 类和对象详解(下)

个人主页&#xff1a;鲤鱼王打挺-CSDN博客 目录 &#x1f497;前言&#xff1a; &#x1f4af;一.static关键字 1. 为什么要使用static 2. static 修饰成员变量&#xff1a; 3. static 修饰成员方法&#xff1a; ​编辑 4. 静态代码块 5.静态导入包 &#x1f4af;二.…

Wi-Fi安全性入门(基于ESP-IDF-v4.4)

主要参考资料&#xff1a; Wi-Fi 安全性: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32/api-guides/wifi-security.html 目录 1.ESP32 Wi-Fi 安全功能1.1 受保护的管理帧 (PMF)1.2 第三代 Wi-Fi 访问保护 (WPA3-Personal) 1.ESP32 Wi-Fi 安全功能 支…

linux系统之jar启动脚本

编辑linux启动脚本 执行 vi run_blog 按i 进入编辑&#xff0c;复制以下代码&#xff0c;并根据当前环境修改三个参数。以下是详细完整脚本代码&#xff1a; #!/bin/bash# 配置部分 JAR_PATH"/path/to/your/app.jar" # 替换为你的 JAR 文件的实际路径 L…

Gin框架操作指南07:路由与中间件

官方文档地址&#xff08;中文&#xff09;&#xff1a;https://gin-gonic.com/zh-cn/docs/ 注&#xff1a;本教程采用工作区机制&#xff0c;所以一个项目下载了Gin框架&#xff0c;其余项目就无需重复下载&#xff0c;想了解的读者可阅读第一节&#xff1a;Gin操作指南&#…

【JVM】内存模型

文章目录 内存模型的基本概念案例 程序计数器栈Java虚拟机栈局部变量表栈帧中局部变量表的实际状态栈帧中存放的数据有哪些 操作数栈帧数据 本地方法栈 堆堆空间是如何进行管理的? 方法区静态变量存储 直接内存直接内存的作用 内存模型的基本概念 在前面的学习中,我们知道了字…

Java 8 Stream API:从基础到高级,掌握流处理的艺术

一、Stream&#xff08;流&#xff09;基本介绍 Java 8 API 添加了一个新的抽象称为Stream&#xff08;流&#xff09;&#xff0c;可以让你以一种声明的方式处理数据&#xff0c;这种风格将要处理的元素集合看做一种流&#xff0c;元素流在管道中传输&#xff0c;并在管道中间…

云黑系统全解无后门 +搭建教程

这套系统呢是玖逸之前南逸写的一套云黑系统&#xff0c;功能带有卡密生成和添加黑名单等&#xff0c;源码放在我的网盘里已经两年之久&#xff0c;由于玖逸现在已经跑路了所以现在发出来分享给大家&#xff0c;需要的可以自己拿去而开&#xff0c;反正功能也不是很多具体的自己…

电脑视频剪辑大比拼,谁更胜一筹?

随着短视频的火爆&#xff0c;越来越多的人开始尝试自己动手制作视频&#xff0c;无论是记录生活点滴还是创作个性短片&#xff0c;一款好用的视频剪辑软件是必不可少的。今天&#xff0c;我们就从短视频运营的角度&#xff0c;来聊聊几款热门的电脑视频剪辑软件&#xff0c;看…