投票城市用到了:system.in, 正则pattern,matcher,排序接口comparable 复写compareTo排序方法

一个班级在选班长,按序号进行投票,并将票数最高的放在第一位显示

设计:

student学生类

投票菜单类

投票操作类

接受输入数据类

主程序调用

public class Student implements Comparable{

	private int id;
private String name;
private int vote; public Student(int id, String name, int vote) {
super();
this.id = id;
this.name = name;
this.vote = vote;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getVote() {
return vote;
} public void setVote(int vote) {
this.vote = vote;
} @Override
public String toString() {
return "姓名::" + name + ", 票数:" + vote + "]";
} public int compareTo(Student stu) {
// TODO 自动生成的方法存根
if(this.vote > stu.vote)
{
return 1;
}else if(this.vote < stu.vote)
{
return -1;
}else{
return 0;
}
} }

  

public class Menu {

	private Student stu[] = {new Student(1,"张三",0), new Student(2,"李四",0), new Student(3,"王五",0), new Student(4,"田七",0)};

	public Menu() throws IOException
{
Operater oper = new Operater(this.stu);
//输出全部需要投票的姓名
oper.list();
//投票
while(oper.vote())
{
;
}
//投票结束后,列出所有的飘数
oper.list(); } }

  

ublic class Operater {

	private Student stu[]=null;
private InputData inputData = null; public Operater(Student stu[])
{
this.stu = stu;
this.inputData = new InputData();
} public void list()
{
for(int i =0; i< this.stu.length; i++)
{
System.out.println(this.stu[i].getId()+"号,姓名:"+this.stu[i].getName()+":【"+this.stu[i].getVote()+"】票");
}
} public boolean vote() throws IOException
{
boolean flag = true;
int stuno = this.inputData.getInt("请输入你要选择的班长候选人ID:", "抱歉您输入的数据有误");
switch(stuno)
{
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;
}
case 0:
{
flag = false;
break;
}
default:
{
flag = false;
break;
}
}
return flag;
} }

  

public class InputData {	

	/*public static void main(String[] args) throws IOException
{ InputStream ipt = System.in;
System.out.println("请输入:");
int temp=0;
StringBuffer buf = new StringBuffer();
while( (temp = ipt.read()) != -1 )
{
char c = (char)temp;
if(c == '\n')
{
break;
}
buf.append(c);
} String IpuStr = new String(buf);
//IpuStr = IpuStr.matches("\\s*|\r|\n|\t"); System.out.println( replace(IpuStr) );
IpuStr = replace(IpuStr);
if(IpuStr.matches("^\\d$"))
{
System.out.println( new Integer(IpuStr) );
}else{
System.out.println( "0" );
}
}
public static String replace(String str)
{
if(str != null && !"".equals(str))
{
Pattern p = Pattern.compile("\\s*|\r|\n|\t");
Matcher m = p.matcher(str);
return m.replaceAll("");
}else{
return str;
}
}
*/ public String replace(String str)
{
if(str != null && !"".equals(str))
{
Pattern p = Pattern.compile("\\s*|\r|\n|\t");
Matcher m = p.matcher(str);
return m.replaceAll("");
}else{
return str;
}
} public int getInt(String str, String str2) throws IOException
{
InputStream ipt = System.in;
System.out.println(str);
int temp=0;
StringBuffer buf = new StringBuffer();
while( (temp = ipt.read()) != -1 )
{
char c = (char)temp;
if(c == '\n')
{ break;
}
buf.append(c);
} String IpuStr = new String(buf);
IpuStr = this.replace(IpuStr);
if(IpuStr.matches("\\d"))
{
return new Integer(IpuStr);
}else{
return 0;
} } }

  

public class Test {

	public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根 new Menu(); } }

  

java:投个票程序的更多相关文章

  1. Java实现卖票程序(两种线程实现)

    /** * 2019年8月8日16:05:05 * 目的:实现火车站卖票系统(第一种创建线程的方式) * @author 张涛 * */ //第一种方式直接继承Thread来创建线程 class T1 ...

  2. Java多线程练习:ticket卖票程序

    /*需求:简单的卖票程序多个窗口买票 */ class Ticket extends Thread{    private static int tick=100;    public void ru ...

  3. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  4. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  5. Java 获取APK安装程序的包名

     Java 获取APK安装程序的包名核心的两个类:  ResPackage ApkDecoder  package com.temobi.util; import java.io.File; impo ...

  6. java 书籍推荐 JavaEE程序员必读图书大推荐

    java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给 ...

  7. 将 Java Spring Framework 应用程序迁移到 Windows Azure

    我们刚刚发布了一个新教程和示例代码,以阐述如何在Windows Azure中使用 Java 相关技术.在该指南中,我们提供了分步教程,说明如何将 Java Spring Framework 应用程序( ...

  8. Java学习之国际化程序

    国际化程序就是把程序的语言根据用户使用的语言显示,各个国家的用户都可以看懂 实现方法就是把输出文字都写在配置文件里,然后根据用户系统语言选择不同的语言输出 package com.gh; import ...

  9. Java 后端微信小程序支付demo (网上说的坑里面基本上都有)

    Java 后端微信小程序支付 一.遇到的问题 1. 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试 2.签名错误 3.已经调起微信统一下单接口,可以拿到预支付ID,但是前端支付的时候 ...

随机推荐

  1. python学习笔记:(五)列表与元组的异同

    在python中最基本的数据结构是序列(sequence),每一个元素被分配一个序号,即元素的位置,也称为索引,第一个索引是0,第二个则是1 元组与列表最大的区别就是: 元组不能更改:列表可以修改 p ...

  2. Nginx 配置文件 nginx.conf 详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...

  3. JSP———数据交互【2】

    内置对象application 实现用户之间的数据共享 与session 对象不同的是,所有客户的 application 对象是相同的一个,即所有的客户共享这个内置的 application 对象 ...

  4. 应用安全 - CMS - ThinkCMF - 漏洞汇总

    ThinkCMF X1.6.0-X2.2.3任意内容包含漏洞 Date: 2019.10 类型: 任意文件写入导致远程代码执行 影响范围: ThinkCMF X1.6.0 ThinkCMF X2.1. ...

  5. 2019 计蒜之道 初赛 第一场 商汤的AI伴游小精灵

    https://nanti.jisuanke.com/t/39260 根据题意我们可以知道  这是一个树 我们只需要找到出度最大的两个点就好了 如果包含根节点的话要-- 两个点相邻的话也要-- 数据很 ...

  6. 解决Jackson2反序列化LocalDateTime报错

    今天在整合redis和spring boot的时候,遇到了一个错误,记录一下. 报错如下: Could not read JSON: Cannot construct instance of `jav ...

  7. eclipse中经常用到的修改菜单项

    1.编写java程序时,书写一个类之后,要调用此类的某个方法时,点个点,此类的所有方法都会自动出现,然后再选择需要的那个方法即可: 2.鼠标放在一个类上面,关于此类的相关描述就会自动加载出来,要修改的 ...

  8. linux修改用户最大线程数

    linux下普通用户最大允许使用线程数为1024: 但是并发量大时,该1024配置项远远不够满足我们的需要,我们可以修改/etc/security/limits.d/90-nproc.conf配置设置 ...

  9. POJ 3410 Split convex polygon(凸包)

    题意是逆时针方向给你两个多边形,问你这两个多边形通过旋转和平移能否拼成一个凸包. 首先可以想到的便是枚举边,肯定是有一对长度相同的边贴合,那么我们就可以n2枚举所有边对,接下来就是旋转点对,那么假设多 ...

  10. vscode配置golang

    https://www.cnblogs.com/Leo_wl/p/8242628.html https://www.cnblogs.com/angelyan/p/10400789.html 主要看了这 ...