博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)
阅读量:5150 次
发布时间:2019-06-13

本文共 3496 字,大约阅读时间需要 11 分钟。

编写一个投票程序,具体如下:

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;i
nums[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; }}

运行结果:

这里写图片描述
这里写图片描述

转载于:https://www.cnblogs.com/TCB-Java/p/6797624.html

你可能感兴趣的文章
Wpf/Wp/Silverlight-Chart图表控件:柱状图、饼状图等使用汇总
查看>>
【Spring Boot】Spring Boot之统一异常处理
查看>>
实现对gridview删除行时弹出确认对话框的一种简单方法
查看>>
vscode 同步设置及扩展插件
查看>>
JAVA虚拟机的生命周期以及内存管理
查看>>
Linux之加密(基于key认证、建立私有云CA)
查看>>
[iOS] WSHorizontalPickerView 图片水平滚动封装
查看>>
splay学习报告
查看>>
浮点数(double)的优势
查看>>
PAT 1011. A+B和C
查看>>
拜耳药厂的止痛药
查看>>
工人师傅们效率真高
查看>>
SU suchart命令学习
查看>>
【先定一个小目标】Windows下安装MongoDB 3.2
查看>>
[LeetCode] 560. Subarray Sum Equals K 子数组和为K
查看>>
[LeetCode] 211. Add and Search Word - Data structure design 添加和查找单词-数据结构设计
查看>>
50队列:报数
查看>>
form表单用ge方式提交时ie显示中文参数乱码
查看>>
Java 8 – Convert List to Map
查看>>
并查集的删除操作
查看>>