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 ...
随机推荐
- css层叠规则(层叠样式表)
CSS层叠规则: 1.找出所有相关的规则,这些规则都包含与一个给定元素匹配的选择器. 2.按权重(!important)和来源对应用到给定元素的所有声明进行排序. 3.按特殊性对应用到给定元素的所有声 ...
- i春秋——“百度杯”CTF比赛 十月场——Vld(Vulcan Logic Dumper 、php opcode、sql 报错注入)
打开题目看到提示 "do you know Vulcan Logic Dumper?" ,再查看源码看到"<!-- index.php.txt ?>" ...
- cpio建立、还原备份档
1. 简介 加入.解开cpio或tar备份档内的文件 与tar相似,将文件归档到硬盘或磁带等存储设备中 2. tar比较 在所处理的文件类型方面,它比tar更全面,但也更复杂 cpio比tar更为可靠 ...
- SpingMVC流程图
Struts的请求流程 springmvc的流程 0.struts2 MVC框架 Controller Hibernate 持久化框架 Model spring ...
- Nginx 高级配置-状态页配置
Nginx 高级配置-状态页配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 建议将nginx的监控状态的值通过zabbix或者Open-Falcon之类的监控工具来监控状态,并 ...
- 接口自动化--数据驱动(ddt)
上次我们提到了unittest单元测试框架,运用单元测试框架unittest进行编写测试用例 但是遇到了一个问题,就是难道我一个测试点中有多个测试用例,我要每一个都要去编写一条测试用例嘛?这实在是太复 ...
- Android Studio总结
课程背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,G ...
- tf.gather_nd()
tf.gather_nd( params, indices, name=None, batch_dims=0) TensorFlow链接:https://tensorflow.google.cn/ap ...
- dedecms手机站和PC站共用同一数据库的方法
我们知道搜索引擎建议将手机站和PC站分开,虽然自适应可以适配不同的终端,但单独建独立的m站可能权重和排名更好,因为移动端的竞争度不同甚至更低.代码更精简.蜘蛛抓取更顺畅,所以要单独建手机站比较好.那么 ...
- hive使用beeline配置远程连接
hive以hadoop集群为基础,提供hdfs的SQL支持: hive一般可以以mysql为元数据存储,默认Derby:hadoop,hive安装自行百度吧: 介绍hive的远程访问: 未配置之前使用 ...