300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java 动物类

Java 动物类

时间:2019-12-06 17:32:37

相关推荐

Java 动物类

这里写目录标题

运行效果主菜单命令1命令2命令3命令4 完整代码动物类(基类)猫类(继承动物类)狗类(继承动物类)测试类

运行效果

主菜单

若用户输入 1-4 之外的其他内容,提示用户输入错误,重新输入,并重新显示主菜单

命令1

命令2

命令3

命令4

完整代码

动物类(基类)

package animal;public abstract class Animal {private int num; // 编号 private int age;// 月龄private String type; // 种类private String remarks;//备注public Animal(int num, int age, String type,String remarks) {this.num = num;this.age = age;this.type = type;this.remarks=remarks;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getRemarks() {return remarks;}public void setRemarks(String remarks) {this.remarks = remarks;}public abstract String toString(); // 抽象方法toString,猫类和狗类用于重载方法protected abstract Object getDognum();}

猫类(继承动物类)

package animal;public class Cat extends Animal {//猫类继承动物类public Cat(int num, int age, String type, String remarks) {super(num, age, type, remarks);}@Overridepublic String toString() {return String.format("猫,编号:%d 月龄:%d 种类:%s 备注:%s",getNum(),getAge(),getType(),getRemarks());}@Overrideprotected Object getDognum() {return "empty";}}

狗类(继承动物类)

package animal;public class Dog extends Animal {//狗类继承动物类private String dognum;//养狗证编号@Overridepublic String getDognum() {return dognum;}public void setDognum(String dognum) {this.dognum = dognum;}public Dog(int num, int age, String type,String dognum, String remarks) {super(num, age, type, remarks);this.dognum=dognum;}@Overridepublic String toString() {return String.format("狗,编号:%d 月龄:%d 种类:%s 养狗证编号:%s 备注:%s",getNum(),getAge(),getType(),getDognum(),getRemarks());}}

测试类

package animal;import java.util.Scanner; // 导入Scanner类,用于输入参数public class AnimalTest {private static Scanner input = new Scanner(System.in);// input作为Scanner类的对象private static Animal[] animals = new Animal[100];// 以动物类为类型的数组private static int animals_number = 0; // 记录当的动物数public static void Create(String[] arr) {// 新增动物if (arr[0].equals("猫")) {if (arr.length == 4) {if (arr[1].matches("[1-9]+")) // 对月龄的输入进行判断{animals_number++; // 当前动物数量增加1animals[animals_number] = new Cat(animals_number, Integer.parseInt(arr[1]), arr[2], arr[3]);System.out.println("创建成功\n"); // 创建完成的提示信息System.out.println(animals[animals_number]);// 自动调用toString()方法System.out.println();return;} else {System.out.println("第二个参数为月龄,应为整数"); // 错误提示}} else {System.out.println("参数的数目不正确,猫后应有三项参数");}System.out.println("\n创建不成功\n\n"); // 此处输出创建失败的提示信息} else if (arr[0].equals("狗")) {if (arr.length == 5) {if (arr[1].matches("[0-9]+")) // 对月龄的输入进行判断{animals_number++; // 当前动物数量增加1animals[animals_number] = new Dog(animals_number, Integer.parseInt(arr[1]), arr[2], arr[3], arr[4]);System.out.println("创建成功\n"); // 创建完成的提示信息System.out.println(animals[animals_number]);System.out.println();return;} else {System.out.println("第二个参数为月龄,应为整数");// 错误提示}} else {System.out.println("参数的数目不正确,狗后应有四项参数");}System.out.println("\n创建不成功\n\n"); // 此处输出创建失败的提示信息} elseSystem.out.println("第一个应为猫或者狗");}public static void Search(String[] arr)// 查找动物{int numbers = 0; // 记录符合要求的动物数Animal[] temp = new Animal[100]; // 存放符合要求的动物对象if ( arr[0].equals("猫") && arr.length == 4 ) // 检查是否是输入了4个参数{System.out.println("判断猫\n");for (int i = 1; i <= animals_number; i++) {if ( animals[i].getDognum().equals("empty")//如果是猫则养狗证编号为empty&&(arr[1].equals("null") || Integer.parseInt(arr[1]) == animals[i].getAge())// 判断月龄是否符合条件&& (arr[2].equals("null") || arr[2].equals(animals[i].getType()))// 判断类型是否符合条件&& (arr[3].equals("null") || arr[3].equals(animals[i].getRemarks()))// 判断备注是否符合条件) {System.out.println("猫的数目加一\n");numbers++;temp[numbers] = animals[i];}}} else if (arr[0].equals("狗") && arr.length == 5) // 检查是否是输入了5个参数{System.out.println("判断狗\n");for (int i = 1; i <= animals_number; i++) {if ( !animals[i].getDognum().equals("empty")//如果是狗则养狗证编号不为empty&&(arr[1].equals("null") || Integer.parseInt(arr[1]) == animals[i].getAge())// 判断月龄是否符合条件&& (arr[2].equals("null") || arr[2].equals(animals[i].getType()))// 判断类型是否符合条件&& (arr[3].equals("null") || arr[3].equals(animals[i].getDognum()))// 判断类型是否符合条件&& (arr[4].equals("null") || arr[4].equals(animals[i].getRemarks()))// 判断备注是否符合条件) {System.out.println("狗的数目加一\n");numbers++;temp[numbers] = animals[i];}}} elseSystem.out.println("输入的参数数量不匹配");if (numbers > 0) // 判断是否有符合要求的动物{System.out.printf("搜索到%d只动物,信息如下:\n", numbers);for (int i = 1; i <= numbers; i++) {System.out.println(temp[i].toString());}} else {System.out.println("没有搜索到相应的动物");}}public static void Menu() {// 菜单函数实现与用户的交互,并作出相应的操作boolean go = true;while (go == true) {System.out.printf("%n请输入命令编号:%n" + "1.录入一个新的动物%n" + "2.根据输入信息查询动物%n" + "3.列出所有动物%n" + "4.退出%n");String ch;ch = input.nextLine();// 以回车作为界定符switch (ch) {case "1": {boolean zhixing = true;// 根据zhixing来判断是否继续循环while (zhixing) // 输入Y继续,输入N退出{System.out.println("请按照以下格式输入:\n" + " 猫 月龄 种类 备注\n" + " 狗 月龄 种类 养狗证编号 备注\n" + " 如:\n"+ " 猫 1 波斯猫 脚受伤\n" + " 狗 3 猎犬 BH_12345 棕色\n" + "其中,月龄必须为数字\n");String animal_information = input.nextLine();String[] arr = animal_information.split("[ ]+");// 以空格分隔字符串Create(arr);System.out.println("是否继续录入(输入Y则继续,输入N则返回主菜单)\n");String yn;yn = input.nextLine();if (yn.equals("Y") == true)// 输入Y则继续循环zhixing = true;if (yn.equals("N") == true)// 输入N则跳出循环zhixing = false;}}break;case "2": {System.out.println("请按照以下格式输入查询信息:\n" + " 猫 月龄 种类 备注\n" + " 狗 月龄 种类 养狗证编号 备注\n" + "如:\n"+ " 猫 1 波斯猫 脚受伤\n" + " 狗 3 猎犬 BH_12345 棕色\n" + "其中,空的字段均可用 null 代替\n");String animal_information = input.nextLine();String[] arr = animal_information.split("[ ]+");// 以空格分隔字符串Search(arr);}break;case "3": {System.out.printf("目前有%d只动物,信息如下:\n", animals_number);for (int i = 1; i <= animals_number; i++) {System.out.println(i + ": " + animals[i].toString());}}break;case "4":System.out.println("已成功退出程序");go = false;break;default:System.out.println("请输入1-4的整数");}}}public static void main(String[] args) {// 主函数Menu();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。