Java基础之简单投票程序

/*=======================================
 * 题目:
 * 1)用面向对象方法,编写学生类Student,
 * 将候选人如姓名、代号、票数保存到Student中,并实现相应的get set 方法
 * 2)输入数据之前,显示出各位候选人的代号及姓名:(提示;建立一个候选人数组)
 * 3)循环执行接收键盘输入的班长候选人代号,直接输入的数字为0,结束投票的输入工作
 * 4)在接收每次输入的候选票后要求验证该后选票是否有效,
 * 即如果输入的数不是0、1、2、3、4这5个数字之一,或者输入一串字母,应显示出错误提示信息:
 * 此选票无效,请输入正确的候选人代号,并继续输入
 * 5)输入结束后显示所有候选人的得票情况,如下所示
 * 6)输入最终当选者的相关信息,如下所示。
 * 
 *====================================*/

package demo014;

import java.io.*;
/**
 * 先把轮子造好,再干大家伙
 * 是一个工具类,用于数据输入;
 * @author R
 *
 */
class InputMyData{
	private BufferedReader buf=null;
	//Constructer
	public InputMyData(){
		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;
	}
	
};
class Student implements Comparable<Student>{
	private int stuNo;
	private String name;
	private int vote;
	public Student(int stuNo,String name,int vote){
		this.stuNo=stuNo;
		this.name=name;
		this.vote=vote;
	}
	public int getStuNo() {
		return stuNo;
	}
	public void setStuNo(int stuNo) {
		this.stuNo = stuNo;
	}
	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 int compareTo(Student o) {//按大--》小排序
		if(this.vote<o.vote){
			return 1;//
		}else if(this.vote>o.vote){
			return -1;
		}else{
		    return 0;
		}
	}
	
};

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();
	}
	
	public void getResult(){
	   	java.util.Arrays.sort(this.stu);
	   	System.out.println("投票结果:"+this.stu[0].getName()+"以"+this.stu[0].getVote()+"赢得投票");
	}
	
	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 void vote(){
		InputMyData input =new InputMyData();
		
		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("输入数据无效,请重新输入:");
	        	  break;
	          }
        }
	}
	
}

public class DemoVote {
   public static void main(String args[]){
	   new Operate();
   }
}

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值