java:投个票程序
投票城市用到了: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:投个票程序的更多相关文章
- Java实现卖票程序(两种线程实现)
/** * 2019年8月8日16:05:05 * 目的:实现火车站卖票系统(第一种创建线程的方式) * @author 张涛 * */ //第一种方式直接继承Thread来创建线程 class T1 ...
- Java多线程练习:ticket卖票程序
/*需求:简单的卖票程序多个窗口买票 */ class Ticket extends Thread{ private static int tick=100; public void ru ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- Java 获取APK安装程序的包名
Java 获取APK安装程序的包名核心的两个类: ResPackage ApkDecoder package com.temobi.util; import java.io.File; impo ...
- java 书籍推荐 JavaEE程序员必读图书大推荐
java 书籍推荐 JavaEE程序员必读图书大推荐 转自:http://www.cnblogs.com/xlwmin/articles/2192775.html 下面是我根据多年的阅读和实践经验,给 ...
- 将 Java Spring Framework 应用程序迁移到 Windows Azure
我们刚刚发布了一个新教程和示例代码,以阐述如何在Windows Azure中使用 Java 相关技术.在该指南中,我们提供了分步教程,说明如何将 Java Spring Framework 应用程序( ...
- Java学习之国际化程序
国际化程序就是把程序的语言根据用户使用的语言显示,各个国家的用户都可以看懂 实现方法就是把输出文字都写在配置文件里,然后根据用户系统语言选择不同的语言输出 package com.gh; import ...
- Java 后端微信小程序支付demo (网上说的坑里面基本上都有)
Java 后端微信小程序支付 一.遇到的问题 1. 商户号该产品权限未开通,请前往商户平台>产品中心检查后重试 2.签名错误 3.已经调起微信统一下单接口,可以拿到预支付ID,但是前端支付的时候 ...
随机推荐
- 【linux】的文件按时间排序
> ls -alt # 按修改时间排序 > ls --sort=time -la # 等价于> ls -alt > ls -alc # 按创建时间排序 > ls -alu ...
- java网络通信:伪异步I/O编程(PIO)
缺点:避免了线程资源耗尽的问题,但是根本上来说,serversocket的accept方法和inputstream的输入流方法都是阻塞型方法. 服务端:加了一个线程池,实现线程复用.客户端不变 pub ...
- python 接口测试时,后端报错no String-argument constructor/factory method
解决方法: 1.先将字典转化为序列化的数据类型 data = {"pageNo":0,"pageSize":10,"shopId":15,& ...
- 源特定组播(SSM:Source Specific Multicast)
源特定组播(SSM:Source Specific Multicast)是一种区别于传统组播的新的业务模型,它使用组播组地址和组播源地址同时来标识一个组播会话,而不是向传统的组播服务那样只使用组播组地 ...
- Shiro Demo 示例(SpringMVC-Mybatis-Shiro-redis)
Shiro Demo 准备工作 运行前申明 请看完本页面的所有细节,对你掌握这个项目来说很重要,别一上来就搞,你不爽,我也不爽. 本项目需要一定的Java功底,需要对SpringMvc,Mybatis ...
- powershell下载网站图片
$picurl = "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=10" $data = ...
- vue分别打包测试环境和正式环境
vue打包时使用不同的环境变量 需求 同一个项目通过打包使用不同的环境变量,目前的环境有三个: 一.本地------开发环境 二.线上------测试环境 三.线上------正式环境 我们都知道vu ...
- STL 函数适配器(function adapter)
函数适配器(function adapter):通过不同函数适配器的绑定,组合和修饰能力,可以实现强大的功能,配合STL泛型算法完成复杂功能. 绑定(bind) template <class ...
- 为企业服务器配置RAID0、raid1、 raid10、raid5、raid6、等常见RAID
RAID卡操作手册先从开机启动时如何进入管理界面开始介绍: 1)当机器开启后,显示器出现阵列卡检测信息时,会提示用户是否要进入管理界面对阵列卡进行操作,此时按下Ctrl + H 即可,如下图 2)按下 ...
- [Git] 025 标签命令
0. 前言 小时候看<剑花-烟雨-江南>,惊讶于那个多重身份的"小侯爷" 后来发现,现实中拥有比小侯爷更多身份的人多如牛毛 其实,在 "Git" 中 ...