java开发实战经典(第⼆版)P45212-10
12.10 有⼀个班采⽤民主投票⽅法推选班长,班长候选⼈共4位,每个⼈姓名及代号分别为“张三 1;李四 2;王五 3;赵六 4”。程序操作员将每张选票上所填的代号(1、2、3或4)循环输⼊电脑,输⼊数字0结束输⼊,然后将所有候选⼈的得票情况显⽰出来,并显⽰最终当选者的信息。
先定义Person类:
1package book;
2
3public class Person implements Comparable<Person>{
4 private String name;
5 private int id;
6 private int count;
7 public Person() {
8 super();
9 }
10 public Person(int id,String name,int count) {
11 super();
12 this.name = name;
13 this.id = id;
14 unt = count;
15 }
16 public String getName() {
17 return name;
18 }
19 public void setName(String name) {
20 this.name = name;
21 }
22 public int getId() {
23 return id;
24 }
25 public void setId(int id) {
26 this.id = id;
27 }
28 public int getCount() {
29 return count;
30 }
31 public void setCount(int count) {
32 unt = count;
33 }
34 @Override
35 public int compareTo(Person p) {
36 unt&unt) {
37 return -1;
38 }else unt&unt) {
39 return 1;
40 }else {
41 return 0;
42 }
43
44 }
45}
然后定义专门处理从键盘接收数据的类InputData:
2import java.io.BufferedReader;
3import java.io.IOException;
4import java.io.InputStreamReader;
5public class InputData {
6 InputStreamReader input = new InputStreamReader(System.in);
7 BufferedReader buf = new BufferedReader(input);
8 public int getInt(String msg,String err) {
9 int num = 0;
10 boolean flag = true;
11 while(flag) {
12 System.out.println(msg);
13 String str = "";
14 try {
15 str = adLine();
16 }catch(IOException e) {
17 e.printStackTrace();
18 }
19 if(str.matches("^\\d$")) {
20 num = Integer.parseInt(str);
21 flag = false;
22 }else {
23 System.out.println(err);
24 }
25 }
26 return num;
27 }
28}
然后定义操作类Operate:
4 private Person per[] = new Person[] {new Person(1,"张三",0),
5 new Person(2,"李四",0),new Person(3,"王五",0),new Person(4,"赵六",0),};
6 private InputData input = new InputData();
7 private boolean flag = true;
8 public Operate() {
9 System.out.println("张三【0票】\n李四【0票】\n王五【0票】\n赵六【0票】");
10 while(this.flag){
11 this.vote();
12 }
13 this.show();
14 sult();
15 }
16 public void show() {
17 for(int i = 0;i<per.length;i++) {
18 System.out.println(this.per[i].getId()+":"+
19 this.per[i].getName()+":【"+this.per[i].getCount()+"】票");
20 }
21 }
java编程开发高清pdf22 public void result() {
23 java.util.Arrays.sort(per);
24 if(per[0].getCount()>per[1].getCount()) {
25 System.out.println(per[0].getId()+"号:"+per[0].getName()+
26 "同学最终以:"+per[0].getCount()+"票当选班长,⼤家祝贺");
27 }else if(per[0].getCount()==per[1].getCount()&&per[1].getCount()!=per[2].getCount()) {
28 System.out.println("【"+per[0].getName()+"】同学和【"+per[1].getName()
29 +"】同学票数相等同为最⾼票,⿇烦⼤家重选⼀次!");
30 }else {
31 System.out.println("超过两个以上候选⼈的票数相等,请⼤家重新再选!");
32 }
33 }
34 public void vote(){
35 int ch = Int("请输⼊候选⼈代号(数字0结束):"," 此选票⽆效,请重新输⼊!\n");
36 switch(ch) {
37 case 0:{
38 flag = false;
39 break;
40 }case 1:{
41 this.per[0].setCount(this.per[0].getCount()+1);
42 break;
43 }case 2:{
44 this.per[1].setCount(this.per[1].getCount()+1);
45 break;
46 }case 3:{
47 this.per[2].setCount(this.per[2].getCount()+1);
48 break;
49 }case 4:{
50 this.per[3].setCount(this.per[3].getCount()+1);
51 break;
52 }default:{
53 System.out.println("此选票⽆效,请重新输⼊");
54 }
55 }
56 }
57 }
最后写测试类Test:
4 public static void main(String args[]) {
5 new Operate();
6 }
7
8}
运⾏结果:
1张三【0票】
2李四【0票】
3王五【0票】
4赵六【0票】
5请输⼊候选⼈代号(数字0结束):
61
7请输⼊候选⼈代号(数字0结束):
81
9请输⼊候选⼈代号(数字0结束):
101
11请输⼊候选⼈代号(数字0结束):
122
13请输⼊候选⼈代号(数字0结束):
143
15请输⼊候选⼈代号(数字0结束):
164
17请输⼊候选⼈代号(数字0结束):
185
19此选票⽆效,请重新输⼊
20请输⼊候选⼈代号(数字0结束):
21hello
22此选票⽆效,请重新输⼊!
23
24请输⼊候选⼈代号(数字0结束):
250
261:张三:【3】票
272:李四:【1】票
283:王五:【1】票
294:赵六:【1】票
301号:张三同学最终以:3票当选班长,⼤家祝贺
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论