分析:
- 寵物資訊自行設計,簡單設計出名字、顏色、年齡3個屬性。
- 寵物類別很多,如貓、狗都屬於寵物,所以寵物是一個標準。
- 只要符合此寵物標準都能放進寵物商店。
- 要儲存多種寵物就是一個物件陣列,如果寵物個數由使用者決定,則在建立時就要分配好能儲存的寵物個數。
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()) ;
}
}
}
};
留言列表