Java实习二

链表(java实现)

Link.java

public class Link{
	private Node first;
	public Link(){
		this.first = null;
	}
	//判断是否为空
	public boolean isEmpty(){
		if(this.first == null)
			return true;
		return false;
	}
	//插入头结点
	public void insertHeadNode(int data){
		Node tmp = new Node(data);
		if(this.first == null)
			first = tmp;
		else
		{
			tmp.setNext(first.getNext());
			first.setNext(tmp);			
		}
		return ;
	}
	//在第index下插入data节点
	public void insertNode(int data, int index){
		Node p = this.first;
		int cnt = 0;
		while(cnt != index){
			p = p.getNext();			
			cnt++;
		}
		Node newNode = new Node(data);
		newNode.setNext(p.getNext());
		p.setNext(newNode);
		return ;
	
	}
	//delete the head node
	public Node deleteHeadNode(){
		Node tmp = first;
		this.first = tmp.getNext();
		return tmp;
	}
	//find the data in the link
	public Node findNode(int data){
		Node p = this.first;
		while(p != null){			
			if(p.getData() == data)
				return p;
			if(p == null)
				break;
			p = p.getNext();
		}	
		return null;
	}
	//display the link
	public void displayLink(){
		Node p = first;
		while(p != null){
			System.out.println(p.getData());
			p = p.getNext();
		}
		return ;
	}	
}

Node.java

public class Node{
	private int data;
	private Node next;	
	//construction
	public Node(){
		this.data = 0;
		this.next = null;
	}
	public Node(int data){
		this.data = data;
		this.next = null;
	}
	//get 
	public Node getNext(){
		return this.next;
	}
	public int getData(){
		return data;
	}
	
	//set 
	public void setNext(Node next){
		this.next = next;
	}
	public void setData(int data){
		this.data = data;
	}
	//show 
	public void nodeDisplay(){
		System.out.println("{"+data+"}");
	}	
}

TestOfNode.java

public class TestOfNode{
	public static void main(String[] args){
		//test of Node
		Node tmp1 = new Node(100);
		tmp1.nodeDisplay();
		
		Link tmp2 = new Link();
		//test of insertHeadNode & displayLink
		tmp2.insertHeadNode(00);
		tmp2.displayLink();
		//test of isEmpty
		System.out.println(tmp2.isEmpty());
		System.out.println("+++++\n\n");
		//test of insertNode
		tmp2.insertNode(11,0);
		tmp2.insertNode(22,1);
		tmp2.insertNode(33,2);
		tmp2.insertNode(44,3);
		tmp2.insertNode(55,4);
		tmp2.insertNode(66,5);
		tmp2.displayLink();
		//test of delete the head Node
		System.out.println("++++");
		tmp2.deleteHeadNode();
		tmp2.displayLink();
		//test of find the data
		if(tmp2.findNode(3310)!=null){
			System.out.println("truely find the data:" + 3310);
		}else{
			System.out.println("fasle");
		}
		
		System.out.println("++++++");
		
		//test of InsertHeadNode
		tmp2.insertHeadNode(1111);
		tmp2.insertHeadNode(2222);
		tmp2.insertHeadNode(3333);
		tmp2.displayLink();
	}
}

排序 - 国家金牌银牌铜牌分别排序

TestOfNode.java

public class TestOfNode{
	public static void main(String[] args){
		//test of Node
		Node tmp1 = new Node(100);
		tmp1.nodeDisplay();
		
		Link tmp2 = new Link();
		//test of insertHeadNode & displayLink
		tmp2.insertHeadNode(00);
		tmp2.displayLink();
		//test of isEmpty
		System.out.println(tmp2.isEmpty());
		System.out.println("+++++\n\n");
		//test of insertNode
		tmp2.insertNode(11,0);
		tmp2.insertNode(22,1);
		tmp2.insertNode(33,2);
		tmp2.insertNode(44,3);
		tmp2.insertNode(55,4);
		tmp2.insertNode(66,5);
		tmp2.displayLink();
		//test of delete the head Node
		System.out.println("++++");
		tmp2.deleteHeadNode();
		tmp2.displayLink();
		//test of find the data
		if(tmp2.findNode(3310)!=null){
			System.out.println("truely find the data:" + 3310);
		}else{
			System.out.println("fasle");
		}
		
		System.out.println("++++++");
		
		//test of InsertHeadNode
		tmp2.insertHeadNode(1111);
		tmp2.insertHeadNode(2222);
		tmp2.insertHeadNode(3333);
		tmp2.displayLink();
	}
}

Test.java

import java.util.Arrays;

public class Test{
	public static void main(String[] args){
		Country American = new Country(46,37,38);
		Country English = new Country(27,23,17);
		Country China = new Country(26,18,26);
		Country Russia = new Country(19,18,19);
		Country Germany = new Country(17,10,15);		
			
	
		Country[] countrys = new Country[5];
		countrys[0] = American;
		countrys[1] = English;
		countrys[2] = China;
		countrys[3] = Russia;
		countrys[4] = Germany;
		Arrays.sort(countrys);
		for(Country cty:countrys)
			System.out.println(cty.gold + " " + cty.silver + " " + cty.copper + " " + cty.sum);
		
	}
}

Coffee 类 - 面向对象编程

Coffee.java

package coffee;

//增加的方法
abstract class AddImplement{
	private String name;
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return this.name;
	}
	public abstract void add();	
}
class AddSugarImplement extends AddImplement{
	public void add(){
		System.out.println("you have added the Sugar^_^");
	}
}
class AddMilkImplement extends AddImplement{
	public void add(){
		System.out.println("you have added the Milk ^_^");
	}
}
//抽象类的实现
public abstract class Coffee{
	private AddImplement addimpl;
	//然后在调用add进行输出
	public void add(){
		addimpl.add();
	};
	//应该先调用这个设置函数
	public void setAddImpl(AddImplement addimpl){
		this.addimpl = addimpl;
	};
}

class InstantCoffee extends Coffee{
	public void setAddImpl(AddImplement addimpl){
		System.out.println("This is an InstantCoffee^_^");
		super.setAddImpl(addimpl);
	}
}

class LatteCoffee extends Coffee{
	public void 
	setAddImpl(AddImplement addimpl){
		System.out.println("This is a LatteCoffee^_^");
		super.setAddImpl(addimpl);
	}
}

class MochaCoffee extends Coffee{
	public void setAddImpl(AddImplement addimpl){
		System.out.println("This is a MochaCoffee^_^");
		super.setAddImpl(addimpl);
	}	
}

MainTest.java

package coffee;

import java.util.Scanner;
public class MainTest {
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String choice = new String();
		String addsth = new String();
		while(true){
		System.out.println("What kind of coffe would you want ?");
		choice = in.nextLine();		
		System.out.println("What would you like to add ?Sugar or Milk?");
		addsth = in.nextLine();
		if(choice.equals("InstantCoffee")){			
			Coffee c1 = new InstantCoffee();
			if(addsth.equals("Sugar")){
				AddImplement a1 = new AddSugarImplement();
				c1.setAddImpl(a1);
				c1.add();
			}else if(addsth.equals("Milk")){
				AddImplement a2 = new AddMilkImplement();
				c1.setAddImpl(a2);
				c1.add();
			}else{
				System.out.println("Sorry,we don't have this kind of things *_*");
			}
		}else if(choice.equals("LatteCoffee")){
			Coffee c1 = new LatteCoffee();
			if(addsth.equals("Sugar")){
				AddImplement a1 = new AddSugarImplement();
				c1.setAddImpl(a1);
				c1.add();
			}else if(addsth.equals("Milk")){
				AddImplement a2 = new AddMilkImplement();
				c1.setAddImpl(a2);
				c1.add();
			}else{
				System.out.println("Sorry,we don't have this kind of things *_*");
			}
		}else if(choice.equals("MochaCoffee")){
			Coffee c1 = new MochaCoffee();
			if(addsth.equals("Sugar")){
				AddImplement a1 = new AddSugarImplement();
				c1.setAddImpl(a1);
				c1.add();
			}else if(addsth.equals("Milk")){
				AddImplement a2 = new AddMilkImplement();
				c1.setAddImpl(a2);
				c1.add();
			}else{
				System.out.println("Sorry,we don't have this kind of things *_*");
			}
		}else{
			System.out.println("We don't have this kind of Coffee*_*");
		}
		}
		
	}

}

模拟一个文件复制过程

Test.java

package test;

//系统成分类
abstract class attribute{
	int cnt;
//	public abstract void operation1();
	public abstract void output();
	public abstract void copy();
	public abstract void traverseDirectory();
}
//目录类
class Folder extends attribute{
	private attribute [] parts = new attribute[100];
	private String name;
	public int cnt = 0;
	private int index = 0;
	//构造函数部分
	Folder(){}
	Folder(String name){
		this.name = name;
	}
	//复制操作
//	public void operation1(){
//		System.out.println("复制文件:" + name);
//	}
	public void output(){
		System.out.println("+" + name);
	}
	public void add(Folder name){
		parts[index] = name;
		index++;
		name.cnt = this.cnt + 1;		
	}
	public void add(File name){
		parts[index] = name;
		index++;
		name.cnt = this.cnt + 1;
	}
	public boolean remove(attribute a){
		for(int i = 0 ; i < index ;i++){
			if(parts[i].equals(a)){
				parts[i] = null;
				return true;
			}
		}
		return false;
	}
	//有几个操作
	public int getchild(){
		return index;
	}
	//遍历操作
	public void traverseDirectory(){
		this.output();
		for(int i = 0 ; i < index; i++){	
			for(int k = 0 ; k <= this.cnt; k++){
				System.out.print("    ");
			}
			this.parts[i].traverseDirectory();
		}
	}
	public void copy(){
		System.out.println("复制文件:" + name);
		for(int j = 0 ; j < this.index ;j++){
			this.parts[j].copy();
		}
	}
}
//文件类
class File extends attribute{
	public String name;
	public int cnt = 0;
	File(String name){
		this.name = new String(name);
	}
	public void output(){
		System.out.println("-" + name);
	}
	public void copy(){
		System.out.println("复制文件:" + name);
	}
//	public void operation1(){
//		System.out.println("复制文件:" + name);
//	}
	public void traverseDirectory(){
		this.output();
	}
}

public class Test{
	public static StringBuffer st = new StringBuffer();
	public static void main(String[] args){
		Folder document = new Folder("我的资料");
		File book = new File("Java编程思想.pdf");
		Folder music = new Folder("我的音乐");
		File music1 = new File("你是我的眼.mp3");
		File music2 = new File("Without You.mp3");
		Folder picture = new Folder("我的照片");
		File pic1 = new File("我在美国白宫的照片");
		File pic2 = new File("我在新加坡的照片");
		File pic3 = new File("我在南极的照片");
		File pic4 = new File("我在南非的照片");
		File pic5 = new File("我与***的合影");
		
		document.add(book);
		document.add(music);
		music.add(music1);
		music.add(music2);
		picture.add(pic1);
		picture.add(pic2);
		picture.add(pic3);
		picture.add(pic4);
		picture.add(pic5);
		
		
		document.copy();
		System.out.println("-------------------------------");
		document.traverseDirectory();
		picture.traverseDirectory();
	}
}
posted @ 2017-12-02 23:33  pprp  阅读(284)  评论(0编辑  收藏  举报