综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)
编写一个投票程序,具体如下:
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;}
}
运行结果:
综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)相关推荐
- 【java】数组判空工具类
数组判空工具类 package com.dost.base.utils.extend;import java.util.List;/*** 数组工具*/ public abstract class A ...
- java 打印对象属性 工具类_关于java实现任意对象输出字符串的工具类ObjectUtils用户打印日志、接口调试及监控等...
通过该对象工具类ObjectUtils(参考org.springframework.util.ObjectUtils)实现了类集.数组及基本数据类型转换及字符串输出,常用在日志输出打印.接口联调及对象 ...
- java获取excle表格对象_Java使用excel工具类导出对象功能示例
本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.use ...
- Java 对象copy之BeanCopier工具类的使用
对象拷贝的应用现状简介: 业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的 ...
- 对象存储Minio 客户端工具类,实现文件上传、图像压缩、图像添加水印
在搭建好了MInio分布式对象存储集群后,官方提供了MInio Client 各类语言的SDK,但是无法直接使用需要进一步封装,这里将JAVA 版的的SDK结合自身业务做个简单封装. Minio 中文 ...
- [XML-Jsoup]Jsoup_对象的使用(Jsoup工具类,Document,Elements,Element,Node)
对象的使用: 1. Jsoup:工具类,可以解析html或xml文档,返回Document* parse:解析html或xml文档,返回Document* parse(File in, String ...
- 生日快乐程序_推荐丨5款工具类小程序应用
1.一周进步 这是一个工具类的学习小程序, 它主要分为四大板块:首页.素材.神奇.专栏:它里面会教你怎么做PPT以及职场中会用到的软件或者是素材,像免费的ps素材库.ai素材库等,你可以在这里循序渐进 ...
- 判断对象是否为空工具类
项目中判断一个对象是否为空的操作必不可少的,可千万别傻乎乎的用==null去判断.目前官方没有给出这样的工具类,只能自己去实现了,代码如下:直接拿去用即可 package com.hisense.io ...
- 对象数组循环的方法总结(js)
map() map()方法返回的是一个新数组,它不会改变原数组的值,值得注意的是,map()函数不会对空数组进行检测. 示例: 对原数组元素进行平方后再赋值给新的数组 let array = [1, ...
- js 对象数组 循环判断
一. js循环对象这个方法很好用. var a = true;this.selectArr.forEach(item=>{if(row.itemNo===item.itemNo){ // 对象里 ...
最新文章
- 第三届全国大学生智能汽车竞赛获奖名单
- TimerTask定时任务
- jfinal连接oracle_JFinal框架操作oracle数据库
- STM32 - 定时器高级应用说明 - 01 - Filtering stage - 波形输入的过滤
- mysql 分段解析_MYSQL分段统计
- php构造方法什么时候使用,php:构造方法的说明详解
- linux清理磁盘空间_Ubuntu上释放磁盘空间的几种简单方法
- django基础入门(3)django中模板
- PHP 使用rabbitmq 入门教程
- 苹果怎么用计算机解锁,苹果ios10密码解锁设置图文教程 怎么用密码解锁
- Market Research/ Desk Research免费二手数据渠道整理
- 【转载】BAPI_GOODSMVT_CREATE FUNCITON FOR MIGO 各种移动类型 源代码参考
- 茶云个人导航系统v1.2源码 带后台+网易云歌单播放功能+腾讯智能在线客服功能
- python3GUI--天气预报小工具(附源码)
- msgbox窗口学习总结窗体复合框
- 如何在您的香港主机帐户上注册多个域名
- 初识 CGI,CGI 简识
- 通过iscsi协议使用ceph rbd
- LittleFS:一个完整的嵌入式文件系统介绍、移植使用教程
- Luogu_P3258 松鼠的新家