解题(PockerCompare-扑克牌比较大小)
题目描述
扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):
3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。
请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。
基本规则:
(1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子);
(3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;
(4)输入的两手牌不会出现相等的情况。
输入描述:
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。
输出描述:
输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。
输入
4 4 4 4-joker JOKER
输出
joker JOKER
代码如下:
package com.yzh.xuexi;
import java.util.Scanner;
public class PockerCompare {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
String s=scanner.nextLine();
String[]arr =s.split("-");
System.out.println(pockerCompare(arr[0], arr[1]));
}
scanner.close();
}
private static String pockerCompare(String pocker1,String pocker2) {
pocker1=pocker1.replace("10", "1");//10和joker、JOKER 不止一个字符,替换成一个字符表示,方便利用字符串的长度
pocker2=pocker2.replace("10", "1");
int length1=pocker1.length();
int length2=pocker2.length();
String result=null;
if (length1==11) {
result=pocker1;
return getResult(result);
}
if (length2==11) {
result= pocker2;
return getResult(result);
}
if(length1==7&&length2==7){
result= compare(pocker1, pocker2)>0?pocker1:pocker2;
return getResult(result);
}
if (length1==7&&length2!=7) {
result= pocker1;
return getResult(result);
}
if (length2==7&&length1!=7) {
result= pocker2;
return getResult(result);
}
if (pocker1.equals("joker")) {
pocker1="s";//10和joker、JOKER 不止一个字符,替换成一个字符表示,方便利用字符串的长度
}else if (pocker1.equals("JOKER")) {
pocker2="b";//10和joker、JOKER 不止一个字符,替换成一个字符表示,方便利用字符串的长度
}
if (pocker2.equals("joker")) {
pocker2="s";
}else if (pocker2.equals("JOKER")) {
pocker2="b";
}
length1=pocker1.length();
length2=pocker2.length();
if (length1!=length2) {
result= "ERROR";
return getResult(result);
}
result= compare(pocker1, pocker2)>0?pocker1:pocker2;
return getResult(result);
}
private static String getResult(String result) {
return result.replace("1", "10").replace("s","joker").replace("b", "JOKER");
}
private static int compare(String pocker1,String pocker2) {
char c1=pocker1.charAt(0);
char c2=pocker2.charAt(0);
String sort="34567891JQKA2sb";
return sort.indexOf(c1) - sort.indexOf(c2);
}
}
解题(PockerCompare-扑克牌比较大小)的更多相关文章
- Java学习--扑克牌比大小的小游戏
实现:生成五十四张牌,然后进行洗牌,输入两名玩家,然后分别发两张牌,进行比较大小,两张牌中拥有较大一张牌的玩家获胜 Card.java代码如下: package com.cardgame; publi ...
- 《流畅的Python》一副扑克牌中的难点
1.现在在看<流畅的Python>这本书,看了三页就发现,这本书果然不是让新手来入门的,一些很常见的知识点能被这个作者玩出花来, 唉,我就在想,下面要分析的这些的代码,就算我费劲巴拉的看懂 ...
- javascript练习-扑克牌
下面用枚举类型来实现一副扑克牌的类: //定义一个玩牌的类 function Card(suit,rank){ function inherit(p){ if(p==null) throw TypeE ...
- python3模拟扑克牌
python3.6环境 import collections from random import choice Card=collections.namedtuple('Card',['rank', ...
- HDU - 1962 二分图最大匹配模板(扑克牌得分最大)
题意: 直接说数据,第一行给定几组数据,每一组数据的第一行是两个人扑克牌分别的数量,第一行是亚当的扑克牌,第二行是夏娃的扑克牌,每一个扑克牌的大小用两个字符来表示,第一个表示是几号扑克牌,第二个表示扑 ...
- HDU 1394
单点,利用线段树解题,看到数据大小一定要敏感,说不定就是暗藏的解题思路 #include <stdio.h> #define lson l,mid,id<<1 #define ...
- 十种JAVA排序算法实例
一.冒泡(Bubble)排序 复制代码 代码如下: void BubbleSortArray() { for(int i=1;i<n;i++) { for ...
- IOS UIView子类UIScrollView
转自:http://www.cnblogs.com/nightwolf/p/3222597.html 虽然apple在IOS框架中提供了很多可以直接使用的UI控件,但是在实际开发当中我们通常都是要自己 ...
- 第十四个目标(dp + 树状数组 + 线段树)
Problem 2236 第十四个目标 Accept: 17 Submit: 35 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- Python 数据模型
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 25.0px Helvetica } 一摞Python风格的纸牌 from collections impo ...
随机推荐
- ansible安装使用入门
生成对称密钥 执行以下命令,会在当前用户的.ssh目录下生成id_rsa和id_rsa_pub两个文件. ssh-keygen -t rsa root用户:/root/.ssh 普通用户:/home/ ...
- javafx自动补全
public boolean showUpload2HomeDialog(final OperationInfo initDataInfo) { boolean result = false; try ...
- openStack queens 功能验证调试
linux已经加载 的内核模块查看
- 21.scrapy爬虫部署
1.启用 scrapyd 2. 在浏览器打开127.0.0.1:6800/ 3. scrapy.cfg 设置 4. 遇到问题: scrapyd-deploy 不是内部命令 编辑 两个配置文件 @ech ...
- nginx 服务器常见配置以及负载均衡
# 配置启动用户,用户权限不够会出现访问 403 的情况 user root; # 启动多少个工作进程 worker_processes 1; # 错误日志文件进程文件的保存地址 error_log ...
- 01.hadoop集群环境搭建
hadoop集群搭建的步骤 1.安装jdk2修改ip地址3.关闭防火墙4.修改hostname5.设置ssh自动登陆6.安装hadoop-------------------------------- ...
- 机器学习进阶-图像基本操作-数值计算 1.cv2.add(将图片进行加和) 2.cv2.resize(图片的维度变换) 3.cv2.addWeighted(将图片按照公式进行重叠操作)
1.cv2.add(dog_img, cat_img) # 进行图片的加和 参数说明: cv2.add将两个图片进行加和,大于255的使用255计数 2.cv2.resize(img, (500, ...
- VS2015 编译前/后拷贝文件到指定目录
项目属性 —> Build Events —>Pre-build / Post-build event command line 中: Copy 源路径 目标路径(将路径用 " ...
- jeecg好用吗,看看大家的评价
大家都会有个疑问,jeecg好用吗? 看看大家的评价
- as3调用外部应用程序 as调用外部exe文件as3调用bat文件 未测试
private function callTest(event: Event): void{callExe("d:/a.exe");callBat("d:/a.bat&q ...