12.10 有一个班采用民主投票方法推选班长,班长候选人共4位,每个人姓名及代号分别为“张三 1;李四 2;王五 3;赵六 4”。程序操作员将每张选票上所填的代号(1、2、3或4)循环输入电脑,输入数字0结束输入,然后将所有候选人的得票情况显示出来,并显示最终当选者的信息。
先定义Person类:
package book;
public class Person implements Comparable{
private String name;
private int id;
private int count;
public Person() {
super();
}
public Person(int id,String name,int count) {
super();
this.name = name;
this.id = id;
this.count = count;
}
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 getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public int compareTo(Person p) {
if(this.count>p.count) {
return -1;
}else if(this.count
然后定义专门处理从键盘接收数据的类InputData:
package book;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputData {
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(input);
public int getInt(String msg,String err) {
int num = 0;
boolean flag = true;
while(flag) {
System.out.println(msg);
String str = "";
try {
str = this.buf.readLine();
}catch(IOException e) {
e.printStackTrace();
}
if(str.matches("^\\d$")) {
num = Integer.parseInt(str);
flag = false;
}else {
System.out.println(err);
}
}
return num;
}
}
然后定义操作类Operate:
package book;
public class Operate {
private Person per[] = new Person[] {new Person(1,"张三",0),
new Person(2,"李四",0),new Person(3,"王五",0),new Person(4,"赵六",0),};
private InputData input = new InputData();
private boolean flag = true;
public Operate() {
System.out.println("张三【0票】\n李四【0票】\n王五【0票】\n赵六【0票】");
while(this.flag){
this.vote();
}
this.show();
this.result();
}
public void show() {
for(int i = 0;iper[1].getCount()) {
System.out.println(per[0].getId()+"号:"+per[0].getName()+
"同学最终以:"+per[0].getCount()+"票当选班长,大家祝贺!!!");
}else if(per[0].getCount()==per[1].getCount()&&per[1].getCount()!=per[2].getCount()) {
System.out.println("【"+per[0].getName()+"】同学和【"+per[1].getName()
+"】同学票数相等同为最高票,麻烦大家重选一次!");
}else {
System.out.println("超过两个以上候选人的票数相等,请大家重新再选!");
}
}
public void vote(){
int ch = input.getInt("请输入候选人代号(数字0结束):"," 此选票无效,请重新输入!\n");
switch(ch) {
case 0:{
flag = false;
break;
}case 1:{
this.per[0].setCount(this.per[0].getCount()+1);
break;
}case 2:{
this.per[1].setCount(this.per[1].getCount()+1);
break;
}case 3:{
this.per[2].setCount(this.per[2].getCount()+1);
break;
}case 4:{
this.per[3].setCount(this.per[3].getCount()+1);
break;
}default:{
System.out.println("此选票无效,请重新输入!!!");
}
}
}
}
最后写测试类Test:
package book;
public class Test {
public static void main(String args[]) {
new Operate();
}
}
运行结果:
张三【0票】
李四【0票】
王五【0票】
赵六【0票】
请输入候选人代号(数字0结束):
1
请输入候选人代号(数字0结束):
1
请输入候选人代号(数字0结束):
1
请输入候选人代号(数字0结束):
2
请输入候选人代号(数字0结束):
3
请输入候选人代号(数字0结束):
4
请输入候选人代号(数字0结束):
5
此选票无效,请重新输入!!!
请输入候选人代号(数字0结束):
hello
此选票无效,请重新输入!
请输入候选人代号(数字0结束):
0
1:张三:【3】票
2:李四:【1】票
3:王五:【1】票
4:赵六:【1】票
1号:张三同学最终以:3票当选班长,大家祝贺!!!
原文地址:http://www.docin.com/p-2020950518.html