public class ExecDemo{
    public static void main(String args[]){
        new Operate() ;
    }
};
import java.io.BufferedReader ;
import java.io.InputStreamReader ;
import java.io.IOException ;
public class InputData{
    private BufferedReader buf = null ;        // 接收数据
    public InputData(){
        this.buf = new BufferedReader(new InputStreamReader(System.in)) ;
    }
    public String getString(String info){    // 得到字符串
        String temp =  null ;    // 接收输入内容
        System.out.print(info) ;
        try{
            temp = this.buf.readLine() ;    // 接收数据
        }catch(IOException e){
            e.printStackTrace() ;
        }
        return temp ;
    }
    public int getInt(String info,String err){    // 得到整型数据
        int temp = 0 ;
        String str = null ;
        boolean flag = true ;    // 定义一个循环标记
        while(flag){
            str = this.getString(info) ;
            if(str.matches("\\d+")){
                temp = Integer.parseInt(str) ;
                flag = false ;    // 更改标志位,将退出循环
            }else{
                System.out.println(err) ;
            }
        }
        return temp ;
    }
};
public class Operate{
    private Student stu[] = {new Student(1,"张三",0),new Student(2,"李四",0),
        new Student(3,"王五",0),new Student(4,"赵六",0)} ;// 侯选人信息
    private boolean flag = true ;
    public Operate(){
        this.printInfo() ;    // 先输出候选人信息
        while(flag){
            this.vote() ;    // 循环调用投票
        }
        this.printInfo() ;    // 输出投票之后的侯选人信息
        this.getResult() ;    // 得到结果
    }
    private void getResult(){    // 得到最终的投票结果
        java.util.Arrays.sort(this.stu) ;    // 排序
        System.out.println("投票最终结果:" + this.stu[0].getName()+"同学,最后以"+this.stu[0].getVote()+"票当选班长!") ;
    }
    public void vote(){    // 此方法完成投票功能
        InputData input = new InputData() ;    // 输入数据
        int num = input.getInt("请输入班长侯选人代号(数字0结束):","此选票无效,请输入正确的侯选人代号!") ;
        switch(num){
            case 0:{
                this.flag = false ;    // 中断循环
                break ;
            }
            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 ;
            }
            default:{
                System.out.println("此选票无效,请输入正确的候选人代号!") ;
            }
        }
    }
    public void printInfo(){    
        for(int i=0;i<stu.length;i++){
            System.out.println(this.stu[i].getStuNo() + ":"
                + this.stu[i].getName() + "【"+this.stu[i].getVote()+"】") ;    
        }
    }
};
 public class Student implements Comparable<Student>{
    private int stuNo ;    // 学生编号
    private String name ;    // 学生姓名
    private int vote ;    // 学生票数
    public Student(int stuNo,String name,int vote){
        this.setStuNo(stuNo) ;
        this.setName(name) ;
        this.setVote(vote) ;
    }
    public int compareTo(Student o){
        if(this.vote<o.vote){
            return 1 ;
        }else if(this.vote>o.vote){
            return -1 ;
        }else{
            return 0 ;
        }
    }
    public void setStuNo(int stuNo){
        this.stuNo = stuNo ;
    }
    public void setName(String name){
        this.name = name ;
    }
    public void setVote(int vote){
        this.vote = vote ;
    }
    public int getStuNo(){
        return this.stuNo ;
    }
    public String getName(){
        return this.name ;
    }
    public int getVote(){
        return this.vote ;
    }
 };