java面向对象简单宠物乐园

动物乐园包括的成员:猫、鸭子……

属性:名称、腿            方法:叫

设计类图

再加入一个海豚类:

需求说明:

1. 分别创建Cat、Duck、Dolphin对象并放到一个数组中,编写方法对数组进行遍历输出各种动物如何叫

2. 对数组进行遍历输出各种动物腿的条数

3. 增加修改功能,使用户可以修改三种动物的信息

4. 如果腿的条数不符合客观条件则手动抛出异常,调用此方法时捕捉异常

编程实现:

1. 动物类

//动物类
public abstract class Animal {
    //定义名字和腿数类型
    private String name;
    private int legNum;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getLegNum() {
        return legNum;
    }
 
    public void setLegNum(int legNum) {
        this.legNum = legNum;
    }
    
    public Animal() {}
    public Animal(String name, int legNum) {
        this.name = name;
        this.legNum = legNum;
    }
//动物叫的抽象方法
    public abstract String shout();
}
2. 子类猫类

//子类猫类
public class Cat extends Animal {
    public Cat(){}
    public Cat(String name,int legNum){
        super(name,legNum);
    }
    public String shout() {
        return "喵喵喵...";
    }
 
}
3. 子类鸭子类

//子类鸭子类
public class Duck extends Animal {
    public Duck(){}
    public Duck(String name,int legNum){
        super(name,legNum);
    }
    public String shout() {
        return "嘎嘎嘎...";
    }
}
4. 子类海豚类

//子类海豚类
public class Dolphin extends Animal {
    public Dolphin(){}
    public Dolphin(String name,int legNum){
        super(name,legNum);
    }
    public String shout() {
        return "海豚音...";
    }
 
}
5. 用户类:定义显示、修改、判断等方法

import java.util.Scanner;
//用户类:定义显示、修改、判断等方法
public class Custom {
    Scanner input = new Scanner(System.in);
    int xiugai;//判断是否修改
    String newName;//修改后的新名字
    Animal cat = new Cat();
    Animal duck = new Duck();
    Animal dolphin = new Dolphin();
    //定义Animal数组存进去各种动物信息
    Animal[] animal ={new Cat("加菲猫",4),new Duck("唐小鸭",2),new Dolphin("海豚奇奇",0)};
    //输出所有动物信息
    public void xianshi(){
        System.out.println("动物名字\t腿的条数\t动物叫");
        for(int i=0;i<animal.length;i++){
            System.out.println(animal[i].getName()+"\t"+animal[i].getLegNum()+"\t"+animal[i].shout());
        }
    }
    //修改想要修改的动物信息
    public void xiugai(String oldName,String newName,int legNum) throws Exception{
        if(oldName.equals(animal[0].getName())){
            if(legNum==4){
                animal[0].setName(newName);
            }else{
                throw new Exception("猫有4条腿");
            }
        }else if(oldName.equals(animal[1].getName())){
            if(legNum==2){
                animal[1].setName(newName);    
            }else{
                throw new Exception("鸭有2条腿");
            }
        }else if(oldName.equals(animal[2].getName())){
            if(legNum==0){
                animal[2].setName(newName);
            }else{
                throw new Exception("海豚没有腿");
            }
        }
        System.out.println("是否要继续修改数据:按0进行修改,其他任意数字键退出");
        xiugai= input.nextInt();
    }
    //判断想要填入的新的动物信息是否重复
    public void panduan(){
        boolean pan = false;
        String new1Name;
        do{
            System.out.println("请输入修改后的动物名称:");
            new1Name=input.next();
            for(int i = 0;i<animal.length;i++){
                if(animal[i].getName().equals(new1Name)){
                    System.out.println("输入错误请重新输入");
                    pan = true;
                }else{
                    pan = false;
                }
            }
        }while(pan == true);
        newName = new1Name;
    }        
}
6. 测试类

import java.util.Scanner;
//测试类
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Custom c = new Custom();
        do{
            c.xianshi();
            System.out.println("请输入要修改的动物姓名:");
            String oldName=input.next();
            c.panduan();
            System.out.println("这个动物有几条腿:");
            int legNum=input.nextInt();
            try {
                c.xiugai(oldName, c.newName, legNum);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }while(c.xiugai==0);
        if(c.xiugai !=0 ){
            System.out.println("谢谢使用!");
        }
    }
}
 
————————————————
版权声明:本文为CSDN博主「妖精小狗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_29343517/article/details/81205090

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值