Java实现排球比赛计分系统
作者:懒懒的 发布时间:2021-07-11 09:11:14
标签:java,计分系统
初步计划:
或许由于个人原因,排球计分系统在假期就完成了,一直未写博客,就这样一直在推就是不想写,在加上过完年就工作了,可能刚实习工作比较紧所以一直等到现在。
写这个系统之前我简单构思了一下,因为离校前我去洛阳参加了一个多月的Java培训,所以写项目用的ide是Java环境。刚开始考虑用jsp做界面,架构用mvc,但是后来一想工作量太大而且效果也不是很好。最终写了纯Java代码,在虚拟机上展示。
需求分析:
排球竞赛为五局三胜制,每局比赛中得够25分并且领先对方2分以上的一方将获得一局胜利,先获得三局胜利的一方将获得比赛的胜利。若比赛中出现24:24的比分,则一方必须领先对方2分方可结束一局。若双方前四局的比分为2:2,则将进行第五局的比赛,第五局比赛中得够15分并且领先对方2分以上的一方将获得胜利。若比赛中出现14:14的比分,则一方必须领先对方2分方可结束比赛。
用户典例:
代码设计:
package ss;
import java.util.Scanner;
/**
* 排球计分系统
*
* 使用排球计分系统可以进行简单的排球计分操作以及查询某一局的比分。
* 1、比赛总共5局,每一局5分,若是有一方领先对方3分,则视为这一方胜利。
* 5局结束后,统计两方胜利的次数,输出最终胜利的一方。并退出程序
* 2、使用查询功能可以查询过往的比赛成绩,输出比分和胜利的一方
*/
public class Game {
static Scanner sca = new Scanner(System.in);
//scoreArr数组,用来存放5局两队的单轮成绩
static int[][] scoreArr = new int[5][2];
//result数组,用来存放每一轮的成绩,方便查询
static String[] result = new String[5];
//用来统计两队胜利的次数
static int ni1 = 0;
static int ni2 = 0;
public static void main(String[] args) {
System.out.println("\n\n --------欢迎进入ww排球计分系统--------\n\n\n");
System.out.println("使用说明:使用ww排球计分系统可以进行简单的排球计分操作以及查询某一局的比分。" + "\n1、比赛总共5局,每一局5分,若是有一方领先对方3分,则视为这一方胜利。"
+ "\n 5局结束后,统计两方胜利的次数,输出最终胜利的一方。并退出程序\n" + "2、使用查询功能可以查询过往的比赛成绩,输出比分和胜利的一方");
for (int i = 0; i < 5;) {
System.out.println(" 请选择您的操作:");
System.out.println("1、开始计分 2、查询 3、退出系统");
//用户输入的操作选择
int choose = sca.nextInt();
//如果用户输入1
if (choose == 1) {
//输出第几局比赛
System.out.println("现在开始第" + (i + 1) + "局比赛");
//调用计分方法
bounds(i);
i++;
} else if (choose == 2) {//如果用户输出2
System.out.println("请输入你要查询的局数:");
int check = sca.nextInt();
//判断用户输入的局数是否开始
if (result[check - 1] == null) {
System.out.println("这一局比赛还没有开始。");
} else {
//从数组中找出结果
System.out.println(result[check - 1]);
}
} else if (choose == 3) {//如果用户输入3,输出当前成绩,并退出程序
System.out.println("本场比赛结束,当前比分为:中国队VS美国队~~~~~" + ni1 + ":" + ni2);
System.out.println("谢谢使用ww计分系统,欢迎下次使用,再见");
System.exit(0);
} else {
System.out.println("您的输入有误,请重新输入");
}
}
//5局比赛结束后,本场比赛结束,输出结果,并退出程序
System.out.println("本场比赛结束,当前比分为:中国队VS美国队~~~~~" + ni1 + ":" + ni2);
if (ni1 > ni2) {
System.out.println("中国队取得最终胜利");
} else {
System.out.println("美国队取得最终胜利");
}
System.out.println("谢谢使用ww计分系统,欢迎下次使用,再见");
}
// 计分方法,统计成绩
public static String[] bounds(int num) {
int i = 0;
//如果两队的成绩都小于等于5
if (scoreArr[num][0] <= 5 && scoreArr[num][1] <= 5) {
for (;; i++) {
System.out.println("请输出获胜方的编号,进行加分");
System.out.println("1、中国队 VS 2、美国队");
int team = sca.nextInt();
if (team == 1) {
//保留每一局的成绩
scoreArr[num][0] += 1;
System.out.println("第" + (i + 1) + "轮比赛结束,当前比分为" + scoreArr[num][0] + ":" + scoreArr[num][1]);
} else if (team == 2) {
scoreArr[num][1] += 1;
System.out.println("第" + (i + 1) + "轮比赛结束,当前比分为" + scoreArr[num][0] + ":" + scoreArr[num][1]);
}
if ((scoreArr[num][0] - scoreArr[num][1]) == 3) {
result[num] = "第" + (num + 1) + "局,比分为" + scoreArr[num][0] + ":" + scoreArr[num][1] + " 中国队胜利";
System.out.println(result[num]);
//每轮比赛结束后,使最终成绩累加1,并返回
ni1 += 1;
return result;
} else if ((scoreArr[num][1] - scoreArr[num][0]) == 3) {
result[num] = "第" + (num + 1) + "局,比分为" + scoreArr[num][0] + ":" + scoreArr[num][1] + " 美国队胜利";
System.out.println(result[num]);
ni2 += 1;
return result;
}
}
} else if (scoreArr[num][0] > scoreArr[num][1]) {
result[num] = "第" + (num + 1) + "局,比分为" + scoreArr[num][0] + ":" + scoreArr[num][1] + " 中国队胜利";
System.out.println(result[num]);
ni1 += 1;
return result;
} else {
result[num] = "第" + (num + 1) + "局,比分为" + scoreArr[num][0] + ":" + scoreArr[num][1] + " 美国队胜利";
System.out.println(result[num]);
ni2 += 1;
return result;
}
}
}
运行界面:
PsP耗时:
总结:由于学习Java的时间不是很长写这个项目的时候遇到了一些问题,不过最后都解决了,因为学过C#,两者的基础也比较像似,用的时间也不是很多,由于时间比较紧张,公司正在做项目,或许不能像在学校有充足的时间,但是我一定认真的对待的。


猜你喜欢
- 在利用C#开发Winform应用程序的时候,我们有可能使用RichTextBox来实现实时显示应用程序日志的功能,日志又分为:一般消息,警告
- Activity栈主要用于管理Activity的切换。当使用Intent跳转至某个目标Activity,需要根据目标Activity的加载模
- 我先解释一下什么叫IO流:I:指的是InputStream,这是一个抽象类,最常用的子类是FileInputStreamO:值得是Outpu
- 问:怎样才能将XML文件导入SQL Server 2000? 答:将XML文件导入SQL Server有若干种方法,这里提供其中的3种: 大
- 我想大家对DateTime.ToString()方法的用法肯定已经非常熟悉了,但我想大家用过的大部分用法都是:DateTime.ToStri
- 前言安卓的Material库提供了许多样式更精美的控件,其中就有悬浮控件,它表现出一种悬浮在页面的效果,也就是有立体效果的,让人产生这种控件
- 在java中用到的最多的时间类莫过于 java.util.Date了, 由于Date类中将getYear(),getMonth()等获取年、
- linux下的shell命令:ps -ef |grep java|grep “ ”&quo
- 复习了下数据结构,用Java的数组实现一下循环队列。队列的类//循环队列class CirQueue{ private int QueueS
- 0x01 创建要转换的类和主函数注意这里一定要实现序列化package day1; import java.io.Serializable;
- 默认配置默认配置比较低,打开稍大点的项目就很容易卡掉,所以最好扩大一下内存。IntelliJ IDEA的VM配置IntelliJ IDEA2
- 前言菱形继承是多重继承中跑不掉的,Java拿掉了多重继承,辅之以接口。C++中虽然没有明确说明接口这种东西,但是只有纯虚函数的类可以看作Ja
- 前言在有些业务场景中,系统对于响应时间有一定的要求,而一个方法里面同步执行的业务逻辑太多势必会影响响应速度,带来不好的用户体验。比如登录时记
- 关于 Android 实现 iOS 上的滚轮选择效果的控件,到 github 上一搜一大堆,之所以还要造这个轮子,目的是为了更好的学习自定义
- 一个项目中肯定会存在很多共用的查询数据,对于这一部分的数据,没必要每一个用户访问时都去查询数据库,因此配置二级缓存将是非常必要的。Mybat
- 在学习获取相册中图片进行裁剪的时候遇到了比较大的问题,在纠结了近半天才真的解决,下面分享一下学习经验。问题:选择了相册中的图片之后要进入图片
- springboot获取项目目录路径springboot部署后获取项目的路径//获取跟目录(绝对路径)File path = new Fil
- 嵌套类型在类或结构内部定义的类型称为嵌套类型。例如:class Container{ class Nested {
- 应用场景:当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退给买家,微信支付将在收到退款请求并且验证
- Mybatis and和循环or混用这次项目用到一个and和or混用的场景 , 因为用到多个or(循环), 没想到好的办法最终转换成用 IN