分析:

  1. 寵物資訊自行設計,簡單設計出名字、顏色、年齡3個屬性。
  2. 寵物類別很多,如貓、狗都屬於寵物,所以寵物是一個標準。
  3. 只要符合此寵物標準都能放進寵物商店。
  4. 要儲存多種寵物就是一個物件陣列,如果寵物個數由使用者決定,則在建立時就要分配好能儲存的寵物個數。

螢幕快照 2016-02-16 上午9.34.27

interface Pet{    // 定義寵物接口

    public String getName() ;

    public String getColor() ;

    public int getAge() ;

}

class Cat implements Pet{    // 貓是寵物,實現介面

    private String name ;    // 寵物名字

    private String color ;    // 寵物顏色

    private int age ;        // 寵物年齡

    public Cat(String name,String color,int age){

        this.setName(name) ;

        this.setColor(color) ;

        this.setAge(age) ;

    }

    public void setName(String name){

        this.name = name ;

    }

    public void setColor(String color){

        this.color = color;

    }

    public void setAge(int age){

        this.age = age ;

    }

    public String getName(){

        return this.name ;

    }

    public String getColor(){

        return this.color ;

    }

    public int getAge(){

        return this.age ;

    }

};

class Dog implements Pet{    // 狗是寵物,實現介面

    private String name ;    // 寵物名字

    private String color ;    // 寵物顏色

    private int age ;        // 寵物年齡

    public Dog(String name,String color,int age){

        this.setName(name) ;

        this.setColor(color) ;

        this.setAge(age) ;

    }

    public void setName(String name){

        this.name = name ;

    }

    public void setColor(String color){

        this.color = color;

    }

    public void setAge(int age){

        this.age = age ;

    }

    public String getName(){

        return this.name ;

    }

    public String getColor(){

        return this.color ;

    }

    public int getAge(){

        return this.age ;

    }

};

class PetShop{    // 寵物商店

    private Pet[] pets ;    // 保存一組寵物

    private int foot ;

    public PetShop(int len){

        if(len>0){

            this.pets = new Pet[len] ;    // 開闢陣列空間

        }else{

            this.pets = new Pet[1] ;    // 至少開闢一個空間

        }

    }

    public boolean add(Pet pet){                //增加寵物

        if(this.foot<this.pets.length){     //判斷寵物商店的寵物是否滿了

            this.pets[this.foot] = pet ;    // 增加寵物

            this.foot ++ ;

            return true ;

        }else{

            return false ;

        }

    }

    public Pet[] search(String keyWord){  //關鍵字尋找

        // 應該確定有多少個寵物符合要求

        Pet p[] = null ;

        int count = 0 ;    // 記錄下有多少個寵物符合查詢結果

        for(int i=0;i<this.pets.length;i++){

            if(this.pets[i]!=null){        // 判斷物件陣列中的內容是否為空

                if(this.pets[i].getName().indexOf(keyWord)!=-1

                    ||this.pets[i].getColor().indexOf(keyWord)!=-1){

                    count++ ;    // 統計符合條件的物個數

                }

            }

        }

        p = new Pet[count] ;    // 根據已經確定的記錄數開闢物件陣列

        int f = 0 ;    // 設定增加的位置標記

        for(int i=0;i<this.pets.length;i++){

            if(this.pets[i]!=null){        // 

                if(this.pets[i].getName().indexOf(keyWord)!=-1

                    ||this.pets[i].getColor().indexOf(keyWord)!=-1){

                    p[f] = this.pets[i] ;  //將符合查詢條件的寵物資訊儲存

                    f++ ;

                }

            }

        }

        return p ;

 

    }

};

public class PetShopDemo{

    public static void main(String args[]){

        PetShop ps = new PetShop(5) ;    // 5個寵物

        ps.add(new Cat(“白貓”,”白色的”,2)) ;    // 增加寵物,成功

        ps.add(new Cat(“黑貓”,”黑色的”,3)) ;    // 增加寵物,成功

        ps.add(new Cat(“花貓”,”花色的”,3)) ;    // 增加寵物,成功

        ps.add(new Dog(“拉布拉多”,”黃色的”,3)) ;    // 增加寵物,成功

        ps.add(new Dog(“金毛”,”金色的”,2)) ;    // 增加寵物,成功

        ps.add(new Dog(“黃狗”,”黑色的”,2)) ;    // 增加寵物,成功

        print(ps.search(“”)) ;     //失敗

    }

    public static void print(Pet p[]){       //輸出操作

        for(int i=0;i<p.length;i++){      //迴圈輸出

            if(p[i]!=null){

                System.out.println(p[i].getName() + “,” + p[i].getColor()

                    +”,” + p[i].getAge()) ;

            }

        }

    }

};

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 mingyilai 的頭像
    mingyilai

    mingyilai的部落格

    mingyilai 發表在 痞客邦 留言(0) 人氣()