Java的多路分支代码,感觉有点意思
/**
* @Author hty
* @Date 2019-12-16 16:39
* @Version 1.0
*/
import java.util.Random;
// 比赛结果
enum OutCom {
WIN,
LOSE,
DRAW,
}
enum RoShaBo {
PAPER(OutCom.DRAW, OutCom.LOSE, OutCom.WIN),
SCISSORS(OutCom.WIN, OutCom.DRAW, OutCom.LOSE),
ROCK(OutCom.LOSE, OutCom.WIN, OutCom.DRAW);
public OutCom withPaper;
public OutCom withScissors;
public OutCom withRock;
RoShaBo(OutCom withPaper, OutCom withScissors, OutCom withRock) {
this.withPaper = withPaper;
this.withScissors = withScissors;
this.withRock = withRock;
}
public OutCom compet(RoShaBo item) {
switch(item){
case PAPER:
return withPaper;
case SCISSORS:
return withScissors;
case ROCK:
return withRock;
default:
return null;
}
}
}
class RoShaBoRunner {
private static final Random random = new Random();
public static void pay(int rounds) {
for (int i = 0; i < rounds; i++) {
RoShaBoRunner.vs(randomOne(),randomOne());
}
}
private static void vs(RoShaBo it1, RoShaBo it2) {
System.out.println(String.format("%s VS %s: %s", it1.name(), it2.name(), it1.compet(it2).name()));
}
private static RoShaBo randomOne() {
int nextInt = random.nextInt(3);
switch(nextInt) {
case 0:
return RoShaBo.PAPER;
case 1:
return RoShaBo.SCISSORS;
case 2:
return RoShaBo.ROCK;
default:
return null;
}
}
public static void main(String[] args) {
pay(60);
}
}
// 输出结果
ROCK VS ROCK: DRAW
ROCK VS PAPER: LOSE
PAPER VS PAPER: DRAW
PAPER VS ROCK: WIN
SCISSORS VS SCISSORS: DRAW
ROCK VS SCISSORS: WIN
SCISSORS VS ROCK: LOSE
SCISSORS VS PAPER: WIN
PAPER VS PAPER: DRAW
...
Java的多路分支代码,感觉有点意思的更多相关文章
- Java开发笔记(十七)各得其所的多路分支
前面提到条件语句的标准格式为“if (条件) { /* 条件成立时的操作代码 */ } else { /* 条件不成立时的操作代码 */ }”,乍看之下仿佛只有两个分支,一个是条件成立时的分支,另一个 ...
- 如何在Java中调用Python代码
有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...
- JAVA中执行JavaScript代码并获取返回值
JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...
- 在Java中调用Python代码
极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...
- (转载)JAVA动态编译--字节代码的操纵
在一般的Java应用开发过程中,开发人员使用Java的方式比较简单.打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了.这种开发模式背后的过程是:开发人员编写的 ...
- merge 本地 master 分支代码提示 “Already up-to-date”
在使用 git 的过程中由于误操作,导致从本地 master 分支 merge 代码到当前分支失败,虽然当前分支和 master 分支代码不同步,但是仍然提示 Already up-to-date. ...
- 转:java怎么用一行代码初始化ArrayList
java怎么用一行代码初始化ArrayList 您可以创建一个工厂方法: public static ArrayList<String> createArrayList(String .. ...
- java中的静态代码块、构造代码块、构造方法
运行下面这段代码,观察其结果: package com.test; public class HelloB extends HelloA { public HelloB() { } { System. ...
- 在Java中执行js代码
在某些特定场景下,我们需要用Java来执行Js代码(如模拟登录时,密码被JS加密了的情况),操作如下: ScriptEngineManager mgr = new ScriptEngineManage ...
随机推荐
- C# DataTable 转实体对象
DataTable 转实体对象 /// <summary> /// DataTable通过反射获取单个对象 /// </summary> public static T ToS ...
- Nginx Rewrite相关功能-ngx_http_rewrite_module模块指令
Nginx Rewrite相关功能-ngx_http_rewrite_module模块指令 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- update的where条件要把索引的字段带上,要不然就全表锁
update的where条件要把索引的字段带上,要不然就全表锁 文章目录 update的where条件要把索引的字段带上,要不然就全表锁 本文主要内容 背景 ...
- 数据结构篇——平衡二叉树(AVL树)
引入 上一篇写了二叉排序树,构建一个二叉排序树,如果构建序列是完全有序的,则会出现这样的情况: 显然这种情况会使得二叉搜索树退化成链表.当出现这样的情况,二叉排序树的查找也就退化成了线性查找,所以我们 ...
- pycharm与github的使用
1.clone代码: 输入github的存储库地址,输入本地存储目录,点击clone即可: 2.上传代码: 输入存储库名字,点击share即可:github上就会有你分享的代码啦
- requests-html
目录 一 介绍 二 安装 三 如何使用requests-html 四 支持JavaScript 五 自定义User-Agent 六 模拟表单提交 七 支持异步请求 一 介绍 Python上有一个非常著 ...
- 关于System.FormatException异常
什么是FormatException 参数格式无效或复合格式字符串不正确时引发的异常. 继承 Object Exception SystemException FormatException 详细说明 ...
- Set和Multiset 怎么用咧↓↓↓
转自:[C++ STL]Set和Multiset - Memset - 博客园https://www.cnblogs.com/ChinaHook/p/6985444.html (对字体进行了略微的修改 ...
- oracle用dba创建用户并授权
参考: https://blog.csdn.net/zhang195617/article/details/5857769 sqlplus中切换用户,如切换到adm用户,命令为:conn adm/12 ...
- Venn 维恩图的绘制
使用在线绘图工具 https://bioinfogp.cnb.csic.es/tools/venny/index.html http://www.biovenn.nl/index.php http:/ ...