〖JAVA IO〗_实例操作:投票程序笔记

〖JAVA IO〗_实例操作:投票程序笔记

 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 ;
    }
 };


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 ExecDemo{
    public static void main(String args[]){
        new Operate() ;
    }
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e421083458

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值