定义图书类Book(有四个属性),图书馆Library类(一个hashset集合,可增加新书,查看添加的书)........详细题目可看内容

本文主要是介绍定义图书类Book(有四个属性),图书馆Library类(一个hashset集合,可增加新书,查看添加的书)........详细题目可看内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/**
 *     定义图书类Book,具有属性账号id,书名name、作者author 和价格price,
    在创建图书对象时要求通过构造器进行创建,一次性将四个属性全部赋值,
    要求账户属性是int型,名称是String型,作者是String型,价格是double,
    请合理进行封装。
    2)在Book类,添加toString方法,要求返回 图书信息字符串,使用\t隔开各信息
    3)要求定义一个图书馆Library类,在图书馆类中添加一个HashSet集合用于保存多本图书
    4)在图书馆类中要求能够新增图书
    5)在图书馆类中要求可以查看所有添加过的图书
    6)不允许添加重复的图书(如果账号id和书名name相同,则认为两本书是相同的)
    效果:
    请输入图书编号:
    1
    请输入图书名称:
    致青春
    请输入图书作者:
    王小五
    请输入图书价格:
    120
    是否继续输入:y
    请输入图书编号:
    2
    请输入图书名称:
    西游记
    请输入图书作者:
    吴承恩
    请输入图书价格:
    230
    是否继续输入:n
    查看图书
    1,致青春,王小五,120
    2,西游记,吴承恩,230
 * @author King_long
 *
 */

package CollectionDemo;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;public class Library{public static void main(String[] args) {// TODO Auto-generated method stubaddTS();}//添加public static void addTS() {HashSet<Book> hashSet=new HashSet<>();Scanner scanner=new Scanner(System.in);do {System.out.println("请输入账号id:");int id=scanner.nextInt();System.out.println("请输入图书名称:");String bookName=scanner.next();System.out.println("请输入作者:");String author=scanner.next();System.out.println("请输入图书价格:");double price=scanner.nextDouble();hashSet.add(new Book(id, bookName, author, price));System.out.println("是否继续,请输入(y/n):");String string=scanner.next();if ("y".equals(string)) {System.out.println(hashSet);}else {System.out.println("查看图书");break;}}while(true);ArrayList<Book> arrayList=new ArrayList<>(hashSet);Collections.sort(arrayList);Iterator<Book> iterator = arrayList.iterator();while (iterator.hasNext()) {Book book = (Book) iterator.next();System.out.println(book);}}
}
package CollectionDemo;public class Book implements Comparable<Book>{private int id;private String bookName;private String author;private double price;public Book() {super();}public Book(int id, String bookName, String author, double price) {super();this.id = id;this.bookName = bookName;this.author = author;this.price = price;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((bookName == null) ? 0 : bookName.hashCode());result = prime * result + id;return result;}public int getId() {return id;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Book other = (Book) obj;if (bookName == null) {if (other.bookName != null)return false;} else if (!bookName.equals(other.bookName))return false;if (id != other.id)return false;return true;}@Overridepublic String toString() {return "Book [id=" + id +"\t"  + bookName + "\t" + author +"\t" + price + "]";}@Overridepublic int compareTo(Book o) {// TODO Auto-generated method stubreturn this.getId()-o.getId();}}

这篇关于定义图书类Book(有四个属性),图书馆Library类(一个hashset集合,可增加新书,查看添加的书)........详细题目可看内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168666

相关文章

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

input的accept属性让文件上传安全高效

《input的accept属性让文件上传安全高效》文章介绍了HTML的input文件上传`accept`属性在文件上传校验中的重要性和优势,通过使用`accept`属性,可以减少前端JavaScrip... 目录前言那个悄悄毁掉你上传体验的“常见写法”改变一切的 html 小特性:accept真正的魔法:让

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

Java 操作 MinIO详细步骤

《Java操作MinIO详细步骤》本文详细介绍了如何使用Java操作MinIO,涵盖了从环境准备、核心API详解到实战场景的全过程,文章从基础的桶和对象操作开始,到大文件分片上传、预签名URL生成... 目录Java 操作 MinIO 全指南:从 API 详解到实战场景引言:为什么选择 MinIO?一、环境