编写一个投票程序,具体如下:
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;}@Overridepublic 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~4boolean 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<students.length;i++){//与对应的id进行匹配if(string.equals(students[i].getId()+"")){students[i].setVowNum(students[i].getVowNum()+1);}}}else{//如果输入数据不符合规则,则提示重新输入System.out.println("选票无效,请输入正确的候选人编号!");}} catch (IOException e) {e.printStackTrace();}}}//解决获得最高票数有多个人的问题public static String[] isVowsEquals(Student[] students){//将得票数存储在一个数组当中int[] nums=new int[students.length];for(int i=0;i<students.length;i++){nums[i]=students[i].getVowNum();}//求最高票数int max=nums[0];for(int i=1;i<nums.length;i++){max=max>nums[i]?max:nums[i];}//解决多个人票数最高的问题int count=0;//获得最高票数的人数,若只有一个,则直接产生班长,若是2个及以上,需要重新投票for(int i=0;i<nums.length;i++){if(nums[i]==max){count++;}}String[] strings=new String[2];strings[1]=""+max;//count>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;}
}

运行结果:

综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)相关推荐

  1. 【java】数组判空工具类

    数组判空工具类 package com.dost.base.utils.extend;import java.util.List;/*** 数组工具*/ public abstract class A ...

  2. java 打印对象属性 工具类_关于java实现任意对象输出字符串的工具类ObjectUtils用户打印日志、接口调试及监控等...

    通过该对象工具类ObjectUtils(参考org.springframework.util.ObjectUtils)实现了类集.数组及基本数据类型转换及字符串输出,常用在日志输出打印.接口联调及对象 ...

  3. java获取excle表格对象_Java使用excel工具类导出对象功能示例

    本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.use ...

  4. Java 对象copy之BeanCopier工具类的使用

    对象拷贝的应用现状简介: 业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的 ...

  5. 对象存储Minio 客户端工具类,实现文件上传、图像压缩、图像添加水印

    在搭建好了MInio分布式对象存储集群后,官方提供了MInio Client 各类语言的SDK,但是无法直接使用需要进一步封装,这里将JAVA 版的的SDK结合自身业务做个简单封装. Minio 中文 ...

  6. [XML-Jsoup]Jsoup_对象的使用(Jsoup工具类,Document,Elements,Element,Node)

    对象的使用: 1. Jsoup:工具类,可以解析html或xml文档,返回Document* parse:解析html或xml文档,返回Document* parse​(File in, String ...

  7. 生日快乐程序_推荐丨5款工具类小程序应用

    1.一周进步 这是一个工具类的学习小程序, 它主要分为四大板块:首页.素材.神奇.专栏:它里面会教你怎么做PPT以及职场中会用到的软件或者是素材,像免费的ps素材库.ai素材库等,你可以在这里循序渐进 ...

  8. 判断对象是否为空工具类

    项目中判断一个对象是否为空的操作必不可少的,可千万别傻乎乎的用==null去判断.目前官方没有给出这样的工具类,只能自己去实现了,代码如下:直接拿去用即可 package com.hisense.io ...

  9. 对象数组循环的方法总结(js)

    map() map()方法返回的是一个新数组,它不会改变原数组的值,值得注意的是,map()函数不会对空数组进行检测. 示例: 对原数组元素进行平方后再赋值给新的数组 let array = [1, ...

  10. js 对象数组 循环判断

    一. js循环对象这个方法很好用. var a = true;this.selectArr.forEach(item=>{if(row.itemNo===item.itemNo){ // 对象里 ...

最新文章

  1. 第三届全国大学生智能汽车竞赛获奖名单
  2. TimerTask定时任务
  3. jfinal连接oracle_JFinal框架操作oracle数据库
  4. STM32 - 定时器高级应用说明 - 01 - Filtering stage - 波形输入的过滤
  5. mysql 分段解析_MYSQL分段统计
  6. php构造方法什么时候使用,php:构造方法的说明详解
  7. linux清理磁盘空间_Ubuntu上释放磁盘空间的几种简单方法
  8. django基础入门(3)django中模板
  9. PHP 使用rabbitmq 入门教程
  10. 苹果怎么用计算机解锁,苹果ios10密码解锁设置图文教程 怎么用密码解锁
  11. Market Research/ Desk Research免费二手数据渠道整理
  12. 【转载】BAPI_GOODSMVT_CREATE FUNCITON FOR MIGO 各种移动类型 源代码参考
  13. 茶云个人导航系统v1.2源码 带后台+网易云歌单播放功能+腾讯智能在线客服功能
  14. python3GUI--天气预报小工具(附源码)
  15. msgbox窗口学习总结窗体复合框
  16. 如何在您的香港主机帐户上注册多个域名
  17. 初识 CGI,CGI 简识
  18. 通过iscsi协议使用ceph rbd
  19. LittleFS:一个完整的嵌入式文件系统介绍、移植使用教程
  20. Luogu_P3258 松鼠的新家

热门文章

  1. 测验2: Python基本图形绘制 (第2周)
  2. mysql 自关联的子孙查询,Mysql自连接查询实例详解
  3. 画直线_在鸡的面前画直线,鸡为什么会晕呢,西瓜视频带你揭秘
  4. HDU-2149(博弈)
  5. 最长递增子序列 最长连续递增序列
  6. 【Flask】ORM高级操作之分组、过滤和子查询
  7. MySQL—事务及其特征
  8. Testing and Test-First Programming
  9. 【web安全】Spring boot heapdump获取敏感信息
  10. 【网络安全】NFS服务安全加固