您的位置:首页 > 编程语言 > Java开发

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

2015-09-27 19:43 609 查看
今天是中秋节,不仅没有啥可喜的事儿,反而自己把自己搞的感冒了,现在有点病怏怏的感觉。本来计划纯粹睡一天的,但是考虑到晚上可能会睡不着我就来实验室看看电影~~既然左右无事就继续把没写完的东西写完~~开始技术!

下面是上次给出的练习:

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;
	 
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: