Java学习笔记2024/2/21

题目1

现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。

训练目标

ArrayList集合存储字符串元素,并遍历。

训练提示

1、创建ArrayList集合,泛型如何定义?

2、怎样将数据添加到集合中?

3、怎样遍历集合?

训练步骤

1、创建ArrayList集合对象,泛型声明为String类型

2、调用集合的add方法,将元素依次存入集合

3、遍历集合

3.1、定义循环,索引从0到集合的size-1

3.2、通过ArrayList集合的get方法,依次获取索引上的元素

参考答案

package test;
​
import java.util.ArrayList;
​
public class test1 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("aaa");list.add("bbb");list.add("aaa");list.add("aaa");list.add("ccc");list.add("bbb");
​for (int i = 0; i < list.size(); i++) {String s = list.get(i);System.out.println(s);}System.out.println(list);}}
​

题目2

请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息,格式如下:

姓名:赵老师, 专业:javase
姓名:钱老师, 专业:javaee
姓名:孙老师, 专业:php
姓名:李老师, 专业:python

训练目标

ArrayList集合存储自定义对象,并遍历。

训练提示

1、怎样定义一个描述教师信息的类?

2、需要将教师对象存入集合,创建集合对象,泛型该怎样定义?

3、怎样将数据添加到集合中?

4、怎样遍历ArrayList集合?输出信息时,直接打印对象名称可以吗?怎样才能按照题目要求格式输出信息?

训练步骤

1、新建Teacher类,成员变量为String类型的name和course,私有修饰,提供构造方法,提供get和set方法。

2、创建ArrayList集合对象,泛型声明为Teacher类型

3、创建若干Teacher对象,可以使用构造方法为成员变量赋值,调用集合的add方法,将元素依次存入集合。

4、遍历集合

3.1、定义循环,索引从0到集合的size-1。

3.2、通过ArrayList集合的get方法,依次获取索引上的元素。

3.3、通过Teacher对象的get方法,获取属性值,拼接成要求的格式输出。

参考答案

package test.test1_1;
​
public class Teacher {private String name;private String specialized;
​public Teacher() {}
​public Teacher(String name, String specialized) {this.name = name;this.specialized = specialized;}
​public String getName() {return name;}
​public void setName(String name) {this.name = name;}
​public String getSpecialized() {return specialized;}
​public void setSpecialized(String specialized) {this.specialized = specialized;}
}
​
package test.test1_1;
​
import java.util.ArrayList;
​
public class test2 {public static void main(String[] args) {ArrayList<Teacher> list = new ArrayList<>();
​Teacher t1 = new Teacher("赵老师", "javase");Teacher t2 = new Teacher("钱老师", "javaee");Teacher t3 = new Teacher("孙老师", "php");Teacher t4 = new Teacher("李老师", "python");
​//要存对象就对象类型,要存字符串就字符串类型list.add(t1);list.add(t2);list.add(t3);list.add(t4);
​for (int i = 0; i < list.size(); i++) {Teacher t = list.get(i);System.out.println("姓名:" + t.getName() + ", 专业:" + t.getSpecialized());}}
}

题目3

有如下员工信息:

姓名:张三,工资:3000
姓名:李四,工资:3500
姓名:王五,工资:4000
姓名:赵六,工资:4500
姓名:田七,工资:5000

先需要将所有的员工信息都存入ArrayList集合中,并完成如下操作:

1、判断是否有姓名为“王五”的员工,如果有,改名为“王小五”

2、判断是否有姓名为“赵六”的员工,如果有,将其删除

3、给姓名为“田七”的员工,涨500工资

训练目标

ArrayList集合的修改元素和删除元素API

训练提示

1、需要定义员工类,将员工信息进行封装

2、创建ArrayList集合,创建员工对象,将所有员工对象存入集合

3、需要判断集合中元素的信息,那么肯定需要遍历集合获取到所有元素

4、ArrayList集合中,修改元素和删除元素的方法是什么?在遍历集合时,删除了集合中的元素,会不会对遍历产生影响呢?如果会,该怎么解决?

训练步骤

1、定义员工类Worker,私有属性name和salary,分别为String和int类型,表示姓名和工资,提供构造、get、set方法

2、创建ArrayList集合,泛型为Worker类型,创建员工对象,将所有员工对象存入集合

3、使用for循环遍历集合,获取到每一个元素。

3.1、判断元素的name属性,如果符合条件,作出相应的修改或者删除。

3.2、遍历时如果删除元素,后面的元素会往前走,索引再加1就会有元素遗漏,所以删除后遍历索引要相应的减1,防止有元素遍历不到。

参考答案

package test.test1_2;
​
public class Worker {private String name;private int salary;
​public Worker() {}
​public Worker(String name, int salary) {this.name = name;this.salary = salary;}
​public String getName() {return name;}
​public void setName(String name) {this.name = name;}
​public int getSalary() {return salary;}
​public void setSalary(int salary) {this.salary = salary;}
}
​
package test.test1_2;
​
import java.util.ArrayList;
​
public class test3 {public static void main(String[] args) {ArrayList<Worker> list = new ArrayList<>();Worker w1 = new Worker("张三", 3000);Worker w2 = new Worker("李四", 3500);Worker w3 = new Worker("王五", 4000);Worker w4 = new Worker("赵六", 4500);Worker w5 = new Worker("田七", 5000);
​list.add(w1);list.add(w2);list.add(w3);list.add(w4);list.add(w5);
​for (int i = 0; i < list.size(); i++) {Worker w = list.get(i);if (w.getName() == "王五") {w.setName("王小五");}if (w.getName() == "赵六") {list.remove(i);i--;}if (w.getName() == "田七") {int re = w.getSalary() + 500;w.setSalary(re);}
​}
​for (int i = 0; i < list.size(); i++) {System.out.println("姓名:" + list.get(i).getName() + ",工资:" + list.get(i).getSalary());}
​}
}

题目4(综合)

利用面向对象的思想设计一个图书管理系统。图书的属性有:编号,书名,作者,价格。要求提供如下功能:

1、提供操作菜单,可以选择要进行的操作。

2、可以添加图书,添加图书时,编号需要唯一,添加成功,返回到菜单。

3、可以查询图书,显示所有图书信息,然后返回到菜单。

4、可以根据书名,查询单本图书信息,显示信息后,返回到菜单。

5、可以删除图书,通过编号删除,删除成功后,返回到菜单。

6、可以修改图书的信息,但编号不可以修改,修改成功后,返回到菜单。

7、可以退出系统,结束程序运行。

提示:

1、所有图书信息由键盘录入

2、图书的价格可以定义为字符串类型,因为在键盘录入时,不可以先使用nextInt()方法获取整数然后再使用next()方法获取字符串,这样会导致next()方法获取不到数据。

训练目标

ArrayList集合API的综合运用、编程逻辑的锻炼

训练提示

1、首先需要创建一个图书类,封装图书信息。

2、提供操作菜单,可以通过键盘录入不同的数字来表示不同的操作,选择结构语句可以实现该需求。

3、管理图书,需要将图书存放起来,首先需要创建集合容器。

4、添加图书,即将图书存入集合中,但存入之前需要判定编号的唯一性,如果编号存在,需要重新录入。

5、查询所有图书,即为遍历集合显示信息。

6、查询单本图书,需要录入图书名称,遍历集合进行查询。

7、修改图书信息,需要根据编号先找到该图书,修改其除了编号之外的信息,存入集合覆盖原来的信息。

8、删除图书信息,需要根据编号先找到该图书,根据索引直接删除即可。

9、退出系统功能,借助结束程序的API实现即可。

训练步骤

1、创建Book类,属性String类型的id,name,author,price。提供构造方法、get和set方法。

2、创建测试类Test04,在main方法中,创建键盘录入对象,创建ArrayList集合对象用于存储图书。

3、使用输出语句定义一个操作菜单,包含添加、查看全部、查看单个、修改、查询、退出功能,使用switch语句对键盘录入的菜单项进行判断。

4、定义方法实现判断id是否已经存在。方法返回值boolean类型,参数列表为集合ArrayList和要查找的id字符串。遍历集合,判断id是否与集合中的Book对象的id相同,如果有相同,返回true,否则返回false

5、定义方法实现添加功能。方法返回值void,参数列表为集合ArrayList。在方法中,先使用键盘录入获取用户录入的id信息,调用方法判断id是否存在,如果存在,重新录入,如果不存在,再依次获取图书的其他信息,创建图书对象,并将图书对象存入集合中,输出添加成功的提示。

6、定义方法实现查看所有图书。方法返回值void,参数列表为集合ArrayList。如果集合长度为0,给出提示,结束方法,否则遍历集合,获取每个图书对象,再调用对象的get方法,获取所有信息展示即可。

7、定义方式实现根据名称查看一本图书。方法返回值void,参数列表为集合ArrayList。键盘录入图书的名称,遍历集合,获取每个图书的名称信息进行比较,如果相同,输出该图书信息,结束方法。否则输出不存在该图书。

8、定义方法实现根据编号修改图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,再依次录入图书的修改后信息,创建新的图书对象,存入集合,将原对象覆盖,给出成功的提示,否则提示该编号图书不存在。

9、定义方法实现根据编号删除图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,根据索引删除该对象,返回成功的提示,否则提示该编号的图书不存在。

10、退出系统的功能直接调用System的exit方法实现即可。

参考答案

package test.test4;
​
public class Book {// 1、创建Book类,属性String类型的id,// name,author,price。// 提供构造方法、get和set方法。private String id;private String name;private String author;private String price;
​public Book() {}
​public Book(String id, String name, String author, String price) {this.id = id;this.name = name;this.author = author;this.price = price;}
​public String getId() {return id;}
​public void setId(String id) {this.id = id;}
​public String getName() {return name;}
​public void setName(String name) {this.name = name;}
​public String getAuthor() {return author;}
​public void setAuthor(String author) {this.author = author;}
​public String getPrice() {return price;}
​public void setPrice(String price) {this.price = price;}
}
package test.test4;
​
import java.util.ArrayList;
import java.util.Scanner;
​
public class Test04 {public static void main(String[] args) {// 2、创建测试类Test04,在main方法中,创建键盘录入对象,// 创建ArrayList集合对象用于存储图书。ArrayList<Book> list = new ArrayList<>();
​while (true) {// 3、使用输出语句定义一个操作菜单,// 包含添加、查看全部、查看单个、修改、查询、退出功能,// 使用switch语句对键盘录入的菜单项进行判断。System.out.println("-----------------------------------------");System.out.println("选择要进行的操作");System.out.println("1:添加图书");System.out.println("2:查询所有图书");System.out.println("3:查询单本图书信息");System.out.println("4:删除图书");System.out.println("5:修改图书的信息");System.out.println("6:退出系统");
​Scanner scanner = new Scanner(System.in);
​String choose = scanner.next();switch (choose) {
​case "1" -> addFeature(list);case "2" -> lookEveryone(list);case "3" -> lookName(list);case "4" -> delete(list);case "5" -> revise(list);case "6" -> System.exit(0);default -> System.out.println("输入错误,请重新输入");
​}}
​}
​// 4、定义方法实现判断id是否已经存在。// 方法返回值boolean类型,// 参数列表为集合ArrayList和要查找的id字符串。// 遍历集合,判断id是否与集合中的Book对象的id相同,// 如果有相同,返回true,否则返回falsepublic static boolean pdId(ArrayList<Book> list, String id) {for (int i = 0; i < list.size(); i++) {Book b = list.get(i);String sId = b.getId();if (sId.equals(id)) {return true;}}return false;}
​
// 5、定义方法实现添加功能。
// 方法返回值void,参数列表为集合ArrayList。
// 在方法中,先使用键盘录入获取用户录入的id信息,
// 调用方法判断id是否存在,如果存在,重新录入,
// 如果不存在,再依次获取图书的其他信息,创建图书对象,
// 并将图书对象存入集合中,输出添加成功的提示。
​public static ArrayList<Book> addFeature(ArrayList<Book> list) {Book b = new Book();Scanner scanner = new Scanner(System.in);while (true) {System.out.println("输入图书id");String id = scanner.next();boolean flag = pdId(list, id);if (flag) {System.out.println("已存在,请重新输入");} else {b.setId(id);break;}}
​System.out.println("输入图书name");String name = scanner.next();b.setName(name);
​System.out.println("输入图书author");String author = scanner.next();b.setAuthor(author);
​System.out.println("输入图书price");String price = scanner.next();b.setPrice(price);
​list.add(b);System.out.println("添加成功");
​return list;
​}
​// 6、定义方法实现查看所有图书。// 方法返回值void,参数列表为集合ArrayList。// 如果集合长度为0,给出提示,结束方法,否则遍历集合,// 获取每个图书对象,再调用对象的get方法,// 获取所有信息展示即可。public static void lookEveryone(ArrayList<Book> list) {if (list.size() == 0) {System.out.println("无图书");}for (int i = 0; i < list.size(); i++) {Book b = list.get(i);System.out.println(b.getId() + "," + b.getName() + "," + b.getAuthor() + "," + b.getPrice());}}
​// 7、定义方式实现根据名称查看一本图书。// 方法返回值void,参数列表为集合ArrayList。// 键盘录入图书的名称,遍历集合,// 获取每个图书的名称信息进行比较,// 如果相同,输出该图书信息,结束方法。// 否则输出不存在该图书。public static void lookName(ArrayList<Book> list) {Scanner scanner = new Scanner(System.in);System.out.println("输入图书名称");String s = scanner.next();for (int i = 0; i < list.size(); i++) {Book b = list.get(i);if (s.equals(b.getName())) {System.out.println(b.getId() + "," + b.getName() + "," + b.getAuthor() + "," + b.getPrice());return;}}System.out.println("不存在此书");}
​// 8、定义方法实现根据编号修改图书信息。// 方法返回值void,参数列表为集合ArrayList。// 键盘录入图书编号,查询该编号是否存在,// 如果存在,再依次录入图书的修改后信息,// 创建新的图书对象,存入集合,将原对象覆盖,// 给出成功的提示,否则提示该编号图书不存在。
​public static void revise(ArrayList<Book> list) {Scanner scanner = new Scanner(System.in);System.out.println("输入想要修改的图书编号");String s = scanner.next();for (int i = 0; i < list.size(); i++) {Book b = list.get(i);if (s.equals(list.get(i).getId())) {System.out.println("输入图书name");String name = scanner.next();b.setName(name);
​System.out.println("输入图书author");String author = scanner.next();b.setAuthor(author);
​System.out.println("输入图书price");String price = scanner.next();b.setPrice(price);
​return;}
​}System.out.println("此编号图书不存在");
​}
​
//    9、定义方法实现根据编号删除图书信息。
//    方法返回值void,参数列表为集合ArrayList。
//    键盘录入图书编号,查询该编号是否存在,
//    如果存在,根据索引删除该对象,返回成功的提示,
//    否则提示该编号的图书不存在。public static void delete(ArrayList<Book> list) {Scanner scanner = new Scanner(System.in);System.out.println("输入要删除的图书编号");String s = scanner.next();for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(s)) {list.remove(i);return;}}System.out.println("该编号的图书不存在");}
​
}

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

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

相关文章

Milvus数据库介绍

参考&#xff1a;https://www.xjx100.cn/news/1726910.html?actiononClick Milvus 基于FAISS、Annoy、HNSW 等向量搜索库构建&#xff0c;核心是解决稠密向量相似度检索的问题。在向量检索库的基础上&#xff0c;Milvus 支持数据分区分片、数据持久化、增量数据摄取、标量向量…

基于Java在线宠物店商城系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

Redis的常见面试题

目录 前言 Redis支持哪些数据类型 五种核心类型 Zset为什么用跳表不用红黑树 &#xff1f; Redis常见的应用场景&#xff1f; 如何检测Redis的连通性&#xff1f; 如何设置key的过期时间&#xff1f; Redis为什么是单线程模型&#xff1f; Redis里的IO多路复用是什…

惠尔顿安全审计系统任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

(delphi11最新学习资料) Object Pascal 学习笔记---第5章第3节(运算符重载)

5.3.4 运算符重载 ​ 另一个与记录相关的 Object Pascal 语言特性是运算符重载&#xff0c;即在数据类型上自己定义标准操作&#xff08;加法、乘法、比较等&#xff09;的能力。基本思想是你可以实现一个加法运算符&#xff08;一个特殊的 Add 方法&#xff09;&#xff0c;然…

【VIP专属】Python应用案例——基于TensorFlow 2.3建立RNN搭配Word2Vec Embedding进行文本分类

目录 一、数据准备 二、实验流程 1、加载数据集 ​2、分词处理

启动node服务报错Error: listen EACCES: permission denied 0.0.0.0:5000

启动node服务报错&#xff1a; 解决方案&#xff1a; 将监听端口改成3000或者其他 修改后结果&#xff1a; 参考原文&#xff1a; Error: listen EACCES: permission denied_error when starting dev server: error: listen eacc-CSDN博客

高级面试:什么是移动语义(Move Semantics)?它是如何提高性能的?

高级面试&#xff1a;什么是移动语义&#xff08;Move Semantics&#xff09;&#xff1f;它是如何提高性能的&#xff1f; 移动语义&#xff08;Move Semantics&#xff09;是 C11 引入的一项重要特性&#xff0c;它允许对象的资源&#xff08;如堆上分配的内存&#xff09;在…

链式前向星

什么是链式前向星 链式前向星&#xff08;Chained Forward Star&#xff09;是一种用于表示稀疏图的数据结构。它主要用于解决图论中的一些算法问题&#xff0c;如最短路径、最小生成树等。 链式前向星通过两个数组来表示图的边和顶点信息&#xff1a; 边数组&#xff08;Ed…

Anaconda下的pkgs占用空间13G,如何安全的清理(已解决)

方法一&#xff1a;让Anaconda自行决定清理 执行命令 conda clean -p 我的Anaconda安装在D盘&#xff0c;具体位置如下。你的应该也能找到对应的位置 D:\*****\**\Anaconda3\pkgs (base) C:\Users\Liu_J>conda clean -p WARNING: C:\Users\***\.conda\pkgs does not ex…

haproxy集成国密ssl功能

1. 概述 1.1 缘起 haproxy作为开源高性能http/tcp代理服务器得到了广泛应用,它可以支持国际ssl加密通信功能,但是对于国密ssl却一直没有被官方得到支持。随着国密标准规范的推广应用,以及等保2.0明确规定要求对网络通信中的报文或会话过程全文加密(三级),这样导致在haprox…

Conda管理Python不同版本教程

Conda管理Python不同版本教程 目录 0.前提 1.conda常用命令 2.conda设置国内源&#xff08;以添加清华源为例&#xff0c;阿里云源同样&#xff09; 3.conda管理python库 4.其它 不太推荐 pyenv管理Python不同版本教程&#xff08;本人另一篇博客&#xff0c;姊妹篇&…

C语言菜鸟入门·数组简介

目录 1. 简介 2. 声明数组 3. 初始化数组 3. 访问数组元素 4. 获取数组长度 5. 数组名 1. 简介 在 C 语言中&#xff0c;数组是一种用来存储相同类型数据元素的集合。数组提供了一种便捷的方式来管理一系列相同类型的数据&#xff0c;可以按照索引来访问和操作数组…

netty的TCP服务端和客户端实现

第一步&#xff1a;引入依赖 <dependencies><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.90.Final</version></dependency></dependencies> 第二步&#xff1a;实…

探究网络工具nc(netcat)的使用方法及安装步骤

目录 &#x1f436;1. 什么是nc&#xff08;netcat&#xff09;&#xff1f; &#x1f436;2. nc&#xff08;netcat&#xff09;的基本使用方法 2.1 &#x1f959;使用 nc 进行端口监听 2.2 &#x1f959;使用 nc 进行端口扫描 2.3 &#x1f959;使用 Netcat 进行文件传输…

代码随想录算法训练营day20

题目&#xff1a;530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先 参考链接&#xff1a;代码随想录 530.二叉搜索树的最小绝对差 思路&#xff1a;我一开始想到的方法是先生成中序序列&#xff0c;然后对相邻两项的差进行计算&#xff0c;取…

【PCIE709-F】基于复旦微JFM7VX690T80 FPGA的全国产化8通道光纤双FMC接口数据处理平台

板卡概述 PCIE709-F是一款基于上海复旦微电子的28nm 7系列FPGA JFM7VX690T80的全国产化8通道光纤双FMC接口数据预处理平台&#xff0c;该板卡采用复旦微的高性能7系列FPGA作为实时处理器&#xff0c;实现4路10G SFP光纤以及1路QSFP通信接口、实现1路X8 PCIE数据传输的功能。板载…

Go 1.22 对 net/http 包的路由增强功能详解

目录 方法匹配&#xff08;Method Matching&#xff09; 通配符&#xff08;Wildcards&#xff09; 路径前缀匹配 优先规则 兼容性 API 变更 小结 参考资料 Go 1.22 版本对 net/http 包的路由功能进行了增强&#xff0c;引入了方法匹配&#xff08;method matching&…

【鸿蒙系统学习笔记】网络请求

一、介绍 资料来自官网&#xff1a;文档中心 网络管理模块主要提供以下功能&#xff1a; HTTP数据请求&#xff1a;通过HTTP发起一个数据请求。WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接。Socket连接&#xff1a;通过Socket进行数据传输。 日常…

SpringMVC回顾总结笔记

MVC是一种思想而SpringMVC是具体的实现&#xff08;Ioc和DI的关系&#xff09; 在创建项目的时候勾选的SpringWeb框架就是SpringMVC框架 与浏览器建立连接 默认返回的是一个 view 视图。需要添加ResponseBody说明返回的是json数据。RestController是ControllerResponseBody…