1. 程式人生 > >java開發實戰第10章答案

java開發實戰第10章答案

按照要求定義一個操作類:要求完成一個一維陣列操作類,其中可以加入任意型別的資料,陣列具體的操作型別由程式外部決定,並且可以實現查詢功能

package chapter10;

class Data<T>{
	private T info;
	public Data(T info){
		this.info=info;
	}
	public String toString(){
		return this.info.toString();
	}
	public T getInfo(){
		return info;
	}
}
class Operation{
	private Data[] datas;
	private int foot;
	public Operation(int len){
		if(len>0){
			this.datas=new Data[len];
		}else{
			this.datas=new Data[1];
		}
	}
	public void add(Data data){
		if(this.foot<this.datas.length){
			this.datas[this.foot]=data;
			this.foot++;
		}else{
			System.out.println("陣列已滿");
		}
	}
	public void search(Object x){
		int i=-1;
		boolean flag=false;
		for(Data data:this.datas){
			i++;
			if(data.getInfo().getClass()==x.getClass()&&data.toString().equals(x.toString())){
				if(flag==false){
					System.out.print("存在");
					flag=true;
				}
				System.out.print("\t"+"對應元素為:");
				System.out.print("data["+i+"]");
			}	
		}
		if(flag==false){
			System.out.println("不存在");
		}else{
			System.out.println();
		}
	}
	public void print(){
		int i=0;
		for(Data data:this.datas){
			System.out.println("data["+(i++)+"]="+data.toString());
		}
	}
}
public class Job1{
	public static void main(String args[]){
		Operation p=new Operation(4);
		p.add(new Data<Integer>(1));
		p.add(new Data<Float>(1.2f));
		p.add(new Data<String>("海賊王"));
		p.add(new Data<Double>(12.0));
		p.print();
		p.search(1);	
		p.search(3.3f);
		p.search("索隆");
		p.search("海賊王");
		
	}
}