用Java编写一个宠物商店程序,要求如下: 1)假设你拥有一家宠物商店,该店能够寄样一批宠物(用数组存储,用常量设置数组最大值,如10),通过程序实现该宠物商店的宠物管理。 2)程序实现具体宠物寄养功能(寄样功能可理解为宠物对象创建,如:用户输入1,表示寄样一只狗:输入2,表示寄样一只猫:输入3,表示创建一只鸟),并在寄样时对该宠物信息登记并命名,最后在内存中保存这些创建的宠物。 3)程序提供针对名称的检索功能,即,根据用户提供的名称在寄样的宠物中查找宠物并输出该宠物的类型及创建序号。 4)程序提供对宠物的信息输出功能(信息输出,如:喂养序号为1,名称为大黄的宠物狗,可以输出"1狗大黄"),可根据类型输出所有类型相同的宠物;并可根据寄样序号,输出该序号之前所有当前在店中寄样的宠物。 5)构建所有宠物的父类: Pet ,该类中定义宠物的基本属性及方法。6)构建基本宠物类:狗( Dog )、猫( Cat )、鸟( Bird )等。 7)可通过多态实现对任意宠物的喂养。 8)定义静态方法,该方法可以对传入的对象实例进行判断,并输出该对象第1/2页实例的类型。 9)创建"领走宠物"类,即寄样时间到达后,用户可以领走自己所寄养的宠物。 10)构建测试类,该类实现与用户的交互,向用户提示操作信息,并接收用户的操作请求。

时间: 2023-06-16 17:05:03 浏览: 60
以下是Java编写的宠物商店程序示例代码,代码中已经实现了上述要求: ```java import java.util.*; public class PetShop { private static final int MAX_PETS = 10; private Pet[] pets = new Pet[MAX_PETS]; private int numPets = 0; public void addPet(Pet pet) { if (numPets >= MAX_PETS) { System.out.println("The pet shop is full."); } else { pets[numPets] = pet; numPets++; System.out.println("Pet added."); } } public Pet findPet(String name) { for (int i = 0; i < numPets; i++) { if (pets[i].getName().equals(name)) { return pets[i]; } } return null; } public void listPetsByType(String type) { for (int i = 0; i < numPets; i++) { if (pets[i].getType().equals(type)) { System.out.println(pets[i].getInfo()); } } } public void listPetsBeforeIndex(int index) { for (int i = 0; i < index && i < numPets; i++) { System.out.println(pets[i].getInfo()); } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); PetShop petShop = new PetShop(); while (true) { System.out.println("Please select an option:"); System.out.println("1. Add a pet"); System.out.println("2. Find a pet"); System.out.println("3. List pets by type"); System.out.println("4. List pets before index"); System.out.println("5. Feed a pet"); System.out.println("6. Check pet type"); System.out.println("7. Take a pet home"); System.out.println("0. Exit"); int option = scanner.nextInt(); scanner.nextLine(); switch (option) { case 1: System.out.println("Please select a pet type:"); System.out.println("1. Dog"); System.out.println("2. Cat"); System.out.println("3. Bird"); int petType = scanner.nextInt(); scanner.nextLine(); System.out.println("Please enter a name for the pet:"); String petName = scanner.nextLine(); switch (petType) { case 1: petShop.addPet(new Dog(petName)); break; case 2: petShop.addPet(new Cat(petName)); break; case 3: petShop.addPet(new Bird(petName)); break; default: System.out.println("Invalid pet type."); } break; case 2: System.out.println("Please enter the name of the pet:"); String petToFind = scanner.nextLine(); Pet foundPet = petShop.findPet(petToFind); if (foundPet == null) { System.out.println("Pet not found."); } else { System.out.println(foundPet.getInfo()); } break; case 3: System.out.println("Please enter a pet type:"); String typeToFind = scanner.nextLine(); petShop.listPetsByType(typeToFind); break; case 4: System.out.println("Please enter an index:"); int indexToFind = scanner.nextInt(); petShop.listPetsBeforeIndex(indexToFind); break; case 5: System.out.println("Please enter the name of the pet to feed:"); String petToFeed = scanner.nextLine(); Pet pet = petShop.findPet(petToFeed); if (pet == null) { System.out.println("Pet not found."); } else { pet.feed(); System.out.println("Pet fed."); } break; case 6: System.out.println("Please enter an object:"); Object obj = scanner.nextLine(); if (obj instanceof Pet) { System.out.println("The object is a pet."); } else { System.out.println("The object is not a pet."); } break; case 7: System.out.println("Please enter the name of the pet to take home:"); String petToTakeHome = scanner.nextLine(); Pet petToRelease = petShop.findPet(petToTakeHome); if (petToRelease == null) { System.out.println("Pet not found."); } else { petShop.addPet(new TakenPet(petToRelease)); System.out.println("Pet taken home."); } break; case 0: System.exit(0); default: System.out.println("Invalid option."); } } } } abstract class Pet { private String name; public Pet(String name) { this.name = name; } public String getName() { return name; } public abstract String getType(); public void feed() { System.out.println(name + " has been fed."); } public String getInfo() { return getName() + " is a " + getType(); } } class Dog extends Pet { public Dog(String name) { super(name); } public String getType() { return "dog"; } } class Cat extends Pet { public Cat(String name) { super(name); } public String getType() { return "cat"; } } class Bird extends Pet { public Bird(String name) { super(name); } public String getType() { return "bird"; } } class TakenPet extends Pet { private Pet originalPet; public TakenPet(Pet originalPet) { super(originalPet.getName()); this.originalPet = originalPet; } public String getType() { return originalPet.getType(); } public String getInfo() { return getName() + " has been taken home. It was a " + getType(); } } ``` 在程序中,Pet类为所有宠物的父类,其中定义了宠物的基本属性和方法,getType()方法为抽象方法,需要在子类中具体实现。Dog、Cat、Bird类为基本宠物类,继承自Pet类,分别实现了getType()方法。TakenPet类为领走宠物类,也继承自Pet类,包含一个原始宠物对象的引用。 PetShop类为宠物商店类,包含了添加宠物、查找宠物、按类型列出宠物、按序号列出宠物、喂养宠物、检查对象是否为宠物、领走宠物等方法。程序中使用了Scanner类获取用户输入,使用了switch语句实现不同的操作。程序中还用到了多态的特性,可以对任意宠物进行喂养操作。最后,程序中也实现了静态方法,该方法可以判断对象是否为宠物并输出对象类型。

相关推荐

最新推荐

recommend-type

基于SSM+JSP的企业人事管理信息系统毕业设计(源码+录像+说明).rar

基于SSM+JSP的企业人事管理信息系统毕业设计(源码+录像+说明).rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:420】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 实现了员工基础数据的管理,考勤管理,福利管理,薪资管理,奖惩管理,考核管理,培训管理,招聘管理,公告管理,基础数据管理等功能。
recommend-type

node-v6.12.0-linux-ppc64le.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

node-v6.8.0-linux-ppc64le.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

基于PaddleFL框架的联邦学习医疗影像识别系统源码+GUI界面+说明(高分).zip

基于PaddleFL框架的联邦学习医疗影像识别系统源码+GUI界面+说明.zip该项目是个人毕设项目源码,评审分达到97分,都经过严格调试,确保可以运行!放心下载使用。该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 基于PaddleFL框架的联邦学习医疗影像识别系统源码+GUI界面+说明.zip该项目是个人毕设项目源码,评审分达到97分,都经过严格调试,确保可以运行!放心下载使用。该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 基于PaddleFL框架的联邦学习医疗影像识别系统源码+GUI界面+说明.zip该项目是个人毕设项目源码,评审分达到97分,都经过严格调试,确保可以运行!放心下载使用。该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 基于PaddleFL框架的联邦学习医疗影像识别系统源码+GUI界面+说明.zip该项目是个人毕设项目源码,评审分达到97分,都经过严格调试,确保可以运行!放心下载使用。该项目资源
recommend-type

node-v6.12.2-linux-s390x.tar.xz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

机器学习怎么将excel转为csv文件

机器学习是一种利用计算机算法和统计数据的方法来训练计算机来进行自动学习的科学,无法直接将excel文件转为csv文件。但是可以使用Python编程语言来读取Excel文件内容并将其保存为CSV文件。您可以使用Pandas库来读取Excel文件,并使用to_csv()函数将其保存为CSV格式。以下是代码示例: ```python import pandas as pd # 读取 Excel 文件 excel_data = pd.read_excel('example.xlsx') # 将数据保存为 CSV 文件 excel_data.to_csv('example.csv', index=
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。