功能描述:

有一个班级采用民主投票的方法推选班长,班长候选人共4位,每个人姓名及代号分别为张三 1,李四 2,王五 3,赵六 4。程序操作员将每张选票上所填的代号(1、2、3、4)循环输入电脑,输入数字0结束输入,然后将所有候选人的得票情况显示出来,并显示最终当选者的信息。

本实例主要采用的知识

Comparable比较器
Arrays类
对象数组。
因为程序中要使用对象数组的排序方式,所以在Student类里需要实现Comparable接口,并覆写compareTo()方法,指定排序规则。
 public class Student implements Comparable<Student>{private int stuNo ; // 学生编号private String name ;    // 学生姓名private int vote ;   // 学生票数public Student(int stuNo,String name,int vote){this.setStuNo(stuNo) ;this.setName(name) ;this.setVote(vote) ;}public int compareTo(Student o){if(this.vote<o.vote){return 1 ;}else if(this.vote>o.vote){return -1 ;}else{return 0 ;}}public void setStuNo(int stuNo){this.stuNo = stuNo ;}public void setName(String name){this.name = name ;}public void setVote(int vote){this.vote = vote ;}public int getStuNo(){return this.stuNo ;}public String getName(){return this.name ;}public int getVote(){return this.vote ;}};

此类的对象数组可以使用Arrays.sort()直接排序。

import java.io.BufferedReader ;
import java.io.InputStreamReader ;
import java.io.IOException ;
public class InputData{private BufferedReader buf = null ;     // 接收数据public InputData(){this.buf = new BufferedReader(new InputStreamReader(System.in)) ;}public String getString(String info){  // 得到字符串String temp =  null ;  // 接收输入内容System.out.print(info) ;try{temp = this.buf.readLine() ;  // 接收数据}catch(IOException e){e.printStackTrace() ;}return temp ;}public int getInt(String info,String err){ // 得到整型数据int temp = 0 ;String str = null ;boolean flag = true ;  // 定义一个循环标记while(flag){str = this.getString(info) ;if(str.matches("\\d+")){temp = Integer.parseInt(str) ;flag = false ;   // 更改标志位,将退出循环}else{System.out.println(err) ;}}return temp ;}
};

定义操作类:

public class Operate{private Student stu[] = {new Student(1,"张三",0),new Student(2,"李四",0),new Student(3,"王五",0),new Student(4,"赵六",0)} ;// 侯选人信息private boolean flag = true ;public Operate(){this.printInfo() ; // 先输出候选人信息while(flag){this.vote() ;    // 循环调用投票}this.printInfo() ;    // 输出投票之后的侯选人信息this.getResult() ;   // 得到结果}private void getResult(){   // 得到最终的投票结果java.util.Arrays.sort(this.stu) ;   // 排序System.out.println("投票最终结果:" + this.stu[0].getName()+"同学,最后以"+this.stu[0].getVote()+"票当选班长!") ;}public void vote(){ // 此方法完成投票功能InputData input = new InputData() ;    // 输入数据int num = input.getInt("请输入班长侯选人代号(数字0结束):","此选票无效,请输入正确的侯选人代号!") ;switch(num){case 0:{this.flag = false ;  // 中断循环break ;}case 1:{this.stu[0].setVote(this.stu[0].getVote() + 1) ;break ;}case 2:{this.stu[1].setVote(this.stu[1].getVote() + 1) ;break ;}case 3:{this.stu[2].setVote(this.stu[2].getVote() + 1) ;break ;}case 4:{this.stu[3].setVote(this.stu[3].getVote() + 1) ;break ;}default:{System.out.println("此选票无效,请输入正确的候选人代号!") ;}}}public void printInfo(){   for(int i=0;i<stu.length;i++){System.out.println(this.stu[i].getStuNo() + ":"+ this.stu[i].getName() + "【"+this.stu[i].getVote()+"】") ; }}
};

主方法:

public class ExecDemo{public static void main(String args[]){new Operate() ;}
};

在实际的开发中字节流的操作是非常多的,而且还有对象序列化。

Java IO操作——投票程序实例相关推荐

  1. Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中

    package com.kj.test;import cn.hutool.core.io.IoUtil;import java.io.File; import java.io.FileOutputSt ...

  2. [零基础学JAVA]Java SE应用部分-27.Java IO操作(01)

    JAVA IO操作目标 本季知识点 1.File类 2.RandomAccessFile类 File类 在JAVA中所有的IO操作全部存放在java.io包中. File是唯一一个与文件本身有关的操作 ...

  3. Java.io.File.getPath()方法实例

    转载自  Java.io.File.getPath()方法实例 java.io.File.getPath() 方法将抽象路径名到路径名字符串.为了分离名称的序列所产生的字符串使用默认名称分隔符. 声明 ...

  4. 用java编写关于母亲节的代码,java编纂图形用户界面程序-实例2:母亲节快乐!o~ 努力...

    java编写图形用户界面程序--实例2:母亲节快乐!^_^o~ 努力! 最近时间越来越少了,又要准备省赛,又要备考四级! 作为一个地地道道的"农村娃"."计算机渣&quo ...

  5. Java IO操作详解

    在Java编程中,IO(输入输出)是重要的组成部分,Java应用常常需要从外界输入数据或者把数据输出到外界. Java IO的核心用一句话概括:抽象类或接口之中的抽象方法会根据实例化子类的不同,会完成 ...

  6. JAVA IO操作笔记

    目录 0 准备 1 文件 1.1 文件常用操作 1.1.1 创建文件 1.1.2 获取文件信息 1.1.3 文件删除 1.1.4 创建目录 2 IO流 2.1 原理及分类 2.2 常用IO流 2.2. ...

  7. java IO操作知识点

    IO流的概念: IO流,将不同的输入输出,以相同的方式操作read(),write();创建不同类型的流,有不同的实现方式,不同类型的流,又有各自特有的操作方式. 无论内部如何工作,所有IO流呈现的都 ...

  8. java io 文件复制_实例讲述Java IO文件复制

    前言:IO流主要分为两大类,分别是字节流与字符流 注意: 1.音频文件.图片.视频(范围广),就用字节流 2.只涉及到文本的,就用字符流 使用字节流复制文本内容(其他文件也可以) 代码如下: impo ...

  9. java io操作_Java IO 操作

    IO操作 Java对数据的操作都是通过流的方式,IO流用来处理设备之间的数据传输,文件上传和文件下载,Java用于操作流的对象都在IO包,NIO(New IO)包中. 创建文件 Java创建文件的方式 ...

最新文章

  1. constrctor,prototype,__proto__
  2. 【LeetCode从零单排】No102 Binary Tree Level Order Traversal
  3. 工厂方法模式与抽象工厂模式
  4. 《自动化技术中的进给电气传动》1.4节读书笔记
  5. LeetCode 1221. 分割平衡字符串
  6. STL--map用法
  7. 推荐系统实践 - 基于用户行为分析的推荐算法
  8. 学c++要不要先学C语言?
  9. 摄影测量学空间后方交会Python代码
  10. 使用python查找重复值
  11. 生鲜配送ERP系统_对商品模块数据模型与界面设计的思考【Java 开源版】杭州生鲜配送系统_升鲜宝_SaaS全链路生鲜供应链管理系统_升鲜宝
  12. 【网络安全学习实践】Windows系统密码破解防护及用户和组管理
  13. 提高Python效率的方法 混合编程向
  14. strace命令使用方式
  15. 记录1——stm32f411CEU6之点亮一盏LED灯+按键控制LED灯
  16. 开启及清除NV_RESTORE信息的方法
  17. 流媒体技术在宽带网络的应用与发展
  18. 合并两个*.rbt文件
  19. 震惊!小猪的设计模式初涉总结!纯干货~
  20. JQuery 获取 数据表格 复选框 选中的值

热门文章

  1. CPU架构的简介(目前有哪些架构及其特点)
  2. Android ---- Ijkplayer阅读native层源码之IjkMediaPlayer_prepareAsync(五)
  3. Ubuntu远程拷贝SCP问题
  4. 计算当前日期到指定日期的天数
  5. 电子相册用linux制作工具,分享一款简单好用的电子相册制作工具!不要错过!...
  6. 思维导图Xmind安装
  7. jupyter notebook 命令行运行时自定义目录
  8. STM32 + CT1711超级准的人体测温方案
  9. java 渐变橡皮擦_HTML5 实现橡皮擦的擦除效果
  10. Arcgis操作系列16-使用Arc Map创建渔网(fishnet)