编写一个投票程序,具体如下:
1)功能描述a.有一个班级采用民主投票的方法推选班长,班长候选人共4位,每个人姓名、编号,分别为“张三 1;李四 2;王五 3;赵六 4”。
b.投票者通过在后台输入候选人编号(1,2,3,4)来实现投票,输入0则表示投票结束。投票结束后,将所有候选人的得票情况显示出来,并显示当选者的信息
2)具体要求
a.要求使用面向对象的方法,编写学生类Student,将候选人的信息(包括票数)作为属性写入类中
b.每次输入时,判断选票是否有效,除0~4之外的任何数字或文字都,提示“选票无效,请输入正确的候选人编号!”,并继续等待输入
c.输入结束后显示所有候选人得票情况
d.要求解决有多人获得最高票数的问题
比如:张三 3票;李四 3票;王五 1票;赵六 2票; 此时,张三和李四票数相同且最高
显示格式:
代码:
Student类
package 第十二章IO流;public class Student { private String name; private int id; private int vowNum; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getVowNum() { return vowNum; } public void setVowNum(int vowNum) { this.vowNum = vowNum; } @Override public String toString() { return "Student [name=" + name + ", id=" + id + ", vowNum=" + vowNum + "]"; } public Student(String name, int id, int vowNum) { super(); this.name = name; this.id = id; this.vowNum = vowNum; } public Student() { super(); }}
测试类:
package 第十二章IO流;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test { public static void main(String[] args) { Student[] students=new Student[4]; students[0]=new Student("张三", 1, 0); students[1]=new Student("李四", 2, 0); students[2]=new Student("王五", 3, 0); students[3]=new Student("赵六", 4, 0); do{ chooseMonitor(students); }while(isVowsEquals(students)[0].equals("true")); int max=Integer.parseInt(isVowsEquals(students)[1]); for (Student student : students) { if(max==student.getVowNum()){ System.out.println("投票最终结果:"+student.getName()+"同学,最终以"+max+"票当选班长"); break; } } } //投票方法 public static void chooseMonitor(Student[] students){ BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); while(true){ try { //输入候选人编号投票 System.out.println("请输入班长候选人编号(数字0结束):"); String string=reader.readLine(); //匹配只能输入0~4 boolean flag=string.matches("[0-4]"); //如果输入数据符合规则,则进行票数计数 if(flag){ //如果输入的为0,结束投票 if(string.equals("0")){ System.out.println("投票结束!投票结果如下:"); for (Student student : students) { System.out.println(student.getId()+":"+student.getName()+" 【"+student.getVowNum()+"票】"); } break; } //统计候选人得票数 for(int i=0;inums[i]?max:nums[i]; } //解决多个人票数最高的问题 int count=0;//获得最高票数的人数,若只有一个,则直接产生班长,若是2个及以上,需要重新投票 for(int i=0;i 1说明:有多个人票数相同且为最高 if(count>1){ //出现多个人票数相同且为最高票数时,需要重新投票 //此时需要将所有票数清零,否则会将上次投票的数量累加在一起 for(Student student:students){ student.setVowNum(0); } System.out.println("【有多个人获得最高票数!】需要重新投票"); System.out.println(); strings[0]="true"; return strings; } strings[0]="false"; return strings; }}
运行结果: