学习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,一经查实,立即删除!

相关文章

C/C++面试八股

引用&#xff1a; C面经(简洁版)-CSDN博客 正文&#xff1a; 1. const 和 volatile 的区别&#xff1f; 2. const 和 volatile 可以共用么&#xff1f;

零基础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 页面需要针对该操作做出…

YoloV10改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发

摘要 在目标检测领域,YoloV10以其高效和准确的性能而闻名。然而,为了进一步提升其检测能力,我们引入了DeBiFormer作为YoloV10的主干网络。这个主干网络的计算量比较大,不过,上篇双级路由注意力的论文受到很大的关注,所以我也将这篇论文中的主干网络用来改进YoloV10,卡多…

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

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

商​汤​二​面

1. 请尽可能详细地说明&#xff0c;根据React Router的思想&#xff0c;如何使用History API实现History Router的PWA&#xff1f;请详细说明如何监听url的改变。 React Router 是一个用于在 React 应用中实现导航和路由的库。它允许你根据 URL 的变化来渲染不同的组件。结合 …

python编译问题 当你编译第一个python程序时可能出现如下错误

python编译问题 当你编译第一个python程序时可能出现如下错误 若出现如下错误&#xff1a; E:\p\venv\Scripts\python.exe E:/p/venv/d.py File “E:/p/venv/d.py”, line 5SyntaxError: Non-ASCII character ‘\xe7’ in file E:/p/venv/d.py on line 5, but no encoding d…

代码随想录算法训练营第十一天|383. 赎金信, 15. 三数之和

文档讲解&#xff1a;代码随想录 难度&#xff1a;easy 383. 赎金信 力扣题目链接(opens new window) 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串&#xff0c;判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成&#xf…

算法Day-2

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

Adobe Illustrator如何在图片快速插入latex公式

Adobe Illustrator没法直接输入latex公式&#xff0c;也没有公式的字体 解决&#xff1a; 1.装插件&#xff1a;latex2ai&#xff08;我装不上&#xff09; 2.latex公式编辑网站&#xff08;图片识别公式多了要收费&#xff09;或者其他latex公式网站&#xff0c;公式打完保…

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

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

23种设计模式具体实现方法

提示&#xff1a;文章 文章目录 前言一、背景二、设计模式1、代理模式2、适配器模式2.1 总结 三、3.1 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 最近 二、设计模式 1、代理模式 参考的这篇文章&#xff0c;代理模式(Proxy) 同时这篇文章还引用了另…

动态规划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和目标端口号 应用层去识别报文的开始和结束

.NET 6新特性 | System.Text.Json功能改进

在.NET 6.0中&#xff0c;JSON处理库得到了显著的改进&#xff0c;主要体现在System.Text.Json上。以下是对.NET 6.0中改进的JSON处理库的详细分析&#xff1a; 一、System.Text.Json的引入与优势 在.NET 6中&#xff0c;Microsoft引入了新的JSON库System.Text.Json作为官方推…

安全基线加固

安全基线加固 定义&#xff1a;为了实现基本防护需求而制定的一系列基准&#xff1b; Windows && Linux 安全基线加固 操作系统具体操作 Windows 账户认证 基本要求对应操作对登录操作系统的用户进行身份标识和鉴别 操作内容&#xff1a;检测开机登录时是否需要密码…

二叉树算法之字典树(Trie)详细解读

字典树&#xff08;Trie&#xff0c;也称前缀树或单词查找树&#xff09;是一种用于快速查找字符串的数据结构&#xff0c;主要应用于字符串集合的高效存储和查找。字典树特别适合处理具有相同前缀的大量字符串集合&#xff0c;比如单词自动补全、拼写检查等场景。 1. 字典树的…

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;}//定义允许上传…