1. 程式人生 > >Java程式設計【2】 -getFlyAnimal() ->accept an animal list,and return an animal list which contains only anim

Java程式設計【2】 -getFlyAnimal() ->accept an animal list,and return an animal list which contains only anim

 今天是中秋節,不僅沒有啥可喜的事兒,反而自己把自己搞的感冒了,現在有點病怏怏的感覺。本來計劃純粹睡一天的,但是考慮到晚上可能會睡不著我就來實驗室看看電影~~既然左右無事就繼續把沒寫完的東西寫完~~開始技術!

       下面是上次給出的練習:

1.Define an interface called IAnimal,it has following behavior -talk(); -walk(); -fly(); each animal will also have a Name property.

2.Implement 3 classes named Tiger,Bird,Duck,all implement IAnimal.

3.Implement a class called Zoo, it sha following behavior 

   - getTenAnimal() ->return 10 animals filled radndomly 3 kinds of animals 

   -getFlyAnimal() ->accept an animal list,and return an animal list which contains only animals can fly(like bird)

   -orderAnimal() ->accept an animal,and return animals in name order.

記憶力沒錯的話,我已經將1.2.實現,3中的第一個函式getTenAnimals()也已經寫出,現在接著寫第二個函式。

第二個函式就是要實現接受一個animal list ,返回屬於bird的animal list。那麼利用list中的class.equal即可實現。

程式碼如下:

public List<Bird> getFlyAnimals(List<IAnimal> list)throws NullPointerException{
	 	 
	 List<Bird> birds = new ArrayList<Bird>();	
	 for (int i = 0; i < list.size(); i++) {
		if( list.get(i).getClass().equals(Bird.class)){
			 birds.add((Bird)list.get(i));
			// System.out.println(list.get(i).getClass().getName());
		 }
	}	 
	return birds;	 
 }

還有最後一個函式orderAnimal(),根據Name將Animal排序,如果只是簡單的將Names排序,數組裡有Arrays.sort(judgeNames); 即可將Names由低到高的排序,但這裡同時需要將Animal型別排序。所以解決方法就是根據名字比較,但是是將Animals類排序。程式碼如下:
public  List<IAnimal> orderAnimals(List<IAnimal> list){
	 ArrayList<String> arrayList = new ArrayList<String>();
	 
	 System.out.println("接受到的名字:");
	for(int i=0;i<list.size();i++){
	 String naString;
	 if( list.get(i).getClass().equals(Bird.class)){
		 Bird bird=(Bird)list.get(i);
		 naString=bird.getName();
	 }else if(list.get(i).getClass().equals(Duck.class)){
		 Duck duck=(Duck)list.get(i);
		 naString =duck.getName();
	 }else{
		 Tiger tiger=(Tiger)list.get(i);
		 naString=tiger.getName();
	 }
	 arrayList.add(naString);
	 
	 System.out.println(arrayList.get(i));  //打印出接收到的animal名字
	}
	 for(int i=0;i<arrayList.size()-1;i++){   //開始排序
		 for(int j=i+1;j<arrayList.size();j++){
			 String temp="";
			if(arrayList.get(i).compareTo(arrayList.get(j) ) >=0 ){
				IAnimal animal= list.get(i);
				IAnimal animal2=list.get(j);
				list.set(j, animal);
				list.set(i, animal2);
				temp=arrayList.get(j);
				arrayList.set(j, arrayList.get(i));
				arrayList.set(i, temp);
			}
			 
		 }
	 }
	 System.out.println("排序後的結果:");
	 for(int i=0;i<arrayList.size();i++){
		 System.out.println(arrayList.get(i));  //輸出排序後的結果
	 }
	 
	 return list;
	 
 }