投票城市用到了:system.in, 正则pattern,matcher,排序接口comparable 复写compareTo排序方法

一个班级在选班长,按序号进行投票,并将票数最高的放在第一位显示

设计:

student学生类

投票菜单类

投票操作类

接受输入数据类

主程序调用

 

public class Student implements Comparable{
	
	private int id;
	private String name;
	private int vote;
	
	
	
	
	public Student(int id, String name, int vote) {
		super();
		this.id = id;
		this.name = name;
		this.vote = vote;
	}

	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getVote() {
		return vote;
	}
	
	public void setVote(int vote) {
		this.vote = vote;
	}

	@Override
	public String toString() {
		return "姓名::" + name + ", 票数:" + vote + "]";
	}
	
	
	public int compareTo(Student stu) {
		// TODO 自动生成的方法存根
		if(this.vote > stu.vote)
		{
			return 1;
		}else if(this.vote < stu.vote)
		{
			return -1;
		}else{
			return 0;
		}
	}	
	
	

}

  

public class Menu {
	
	private Student stu[] = {new Student(1,"张三",0), new Student(2,"李四",0), new Student(3,"王五",0), new Student(4,"田七",0)};
	
	public Menu() throws IOException
	{
		Operater oper = new Operater(this.stu);
		//输出全部需要投票的姓名
		oper.list();
		//投票
		while(oper.vote())
		{
			;
		}
		//投票结束后,列出所有的飘数
		oper.list();
		
	}
	
}

  

 

ublic class Operater {
	
	private Student stu[]=null;
	private InputData inputData = null;
	

	public Operater(Student stu[])
	{
		this.stu = stu;
		this.inputData = new InputData();
	}
	
	public void list()
	{
		for(int i =0; i< this.stu.length; i++)
		{
			System.out.println(this.stu[i].getId()+"号,姓名:"+this.stu[i].getName()+":【"+this.stu[i].getVote()+"】票");
		}
	}
	
	
	public boolean vote() throws IOException
	{
		boolean flag = true;
		int stuno = this.inputData.getInt("请输入你要选择的班长候选人ID:", "抱歉您输入的数据有误");
		switch(stuno)
		{
			case 1:{
				this.stu[0].setVote( this.stu[0].getVote() + 1);				
				break;
			}
			case 2:{
				this.stu[1].setVote( this.stu[1].getVote() + 1);
				break;
			}
			case 3:{
				this.stu[2].setVote( this.stu[2].getVote() + 1);
				break;
			}
			case 4:{
				this.stu[3].setVote( this.stu[3].getVote() + 1);
				break;
			}
			case 0:
			{
				flag = false;
				break;
			}
			default:
			{
				flag = false;
				break;
			}
		}		
		return flag;
	}

}

  

 

public class InputData {	
	
	
	/*public static void main(String[] args) throws IOException
	{
		
		InputStream ipt = System.in;
		System.out.println("请输入:");
		int temp=0;
		StringBuffer buf = new StringBuffer();
		while( (temp = ipt.read()) != -1  )
		{
			char c = (char)temp;
			if(c == '\n')
			{
				break;
			}			
			buf.append(c);
		}

		String IpuStr = new String(buf);	
		//IpuStr = IpuStr.matches("\\s*|\r|\n|\t");
		
		System.out.println( replace(IpuStr) );
		IpuStr =  replace(IpuStr);
		if(IpuStr.matches("^\\d$"))
		{
			System.out.println( new Integer(IpuStr) );
		}else{
			System.out.println( "0" );
		}
	}
	public static String replace(String str)
	{
		if(str != null && !"".equals(str))
		{
			Pattern p = Pattern.compile("\\s*|\r|\n|\t");
			Matcher  m = p.matcher(str);
			return m.replaceAll("");
		}else{
			return str;
		}
	}
	*/
	
	
	public  String replace(String str)
	{
		if(str != null && !"".equals(str))
		{
			Pattern p = Pattern.compile("\\s*|\r|\n|\t");
			Matcher  m = p.matcher(str);
			return m.replaceAll("");
		}else{
			return str;
		}
	}

	public int getInt(String str, String str2) throws IOException
	{
		InputStream ipt = System.in;
		System.out.println(str);
		int temp=0;
		StringBuffer buf = new StringBuffer();
		while( (temp = ipt.read()) != -1  )
		{
			char c = (char)temp;
			if(c == '\n')
			{
				
				break;
			}
			buf.append(c);
		}

		String IpuStr = new String(buf);
		IpuStr = this.replace(IpuStr);
		if(IpuStr.matches("\\d"))
		{
			return new Integer(IpuStr);
		}else{
			return 0;
		}
		
	}
	
	
}

  

 

public class Test {

	public static void main(String[] args) throws IOException {
		// TODO 自动生成的方法存根

		new Menu();
		
	}

}