天地无极,乾坤剑法

导航

 

题目描述

扑克牌游戏大家应该都比较熟悉了,一副牌由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。

示例1

输入

4 4 4 4-joker JOKER

输出 

joker JOKER

代码如下:

 1 package com.yzh.xuexi;
 2 
 3 import java.util.Scanner;
 4 
 5 public class PockerCompare {
 6 
 7     public static void main(String[] args) {
 8         Scanner scanner=new Scanner(System.in);
 9         while(scanner.hasNext()){
10             String s=scanner.nextLine();
11             String[]arr =s.split("-");
12             System.out.println(pockerCompare(arr[0], arr[1]));
13         }
14         scanner.close();
15     }
16     
17     private static String pockerCompare(String pocker1,String pocker2) {
18         pocker1=pocker1.replace("10", "1");//10和joker、JOKER 不止一个字符,替换成一个字符表示,方便利用字符串的长度
19         pocker2=pocker2.replace("10", "1");
20         
21         int length1=pocker1.length();
22         int length2=pocker2.length();
23         String result=null;
24         if (length1==11) {
25             result=pocker1;
26             return getResult(result);
27         }
28         if (length2==11) {
29             result= pocker2;
30             return getResult(result);
31         }
32         
33         if(length1==7&&length2==7){
34             result= compare(pocker1, pocker2)>0?pocker1:pocker2;
35             return getResult(result);
36         }
37         if (length1==7&&length2!=7) {
38             result= pocker1;
39             return getResult(result);
40         }
41         if (length2==7&&length1!=7) {
42             result= pocker2;
43             return getResult(result);
44         }
45         
46         if (pocker1.equals("joker")) {
47             pocker1="s";//10和joker、JOKER 不止一个字符,替换成一个字符表示,方便利用字符串的长度
48         }else if (pocker1.equals("JOKER")) {
49             pocker2="b";//10和joker、JOKER 不止一个字符,替换成一个字符表示,方便利用字符串的长度
50         }
51         if (pocker2.equals("joker")) {
52             pocker2="s";
53         }else if (pocker2.equals("JOKER")) {
54             pocker2="b";
55         }
56         
57         length1=pocker1.length();
58         length2=pocker2.length();
59             
60         if (length1!=length2) {
61             result= "ERROR";
62             return getResult(result);
63         }
64         
65         result= compare(pocker1, pocker2)>0?pocker1:pocker2;
66         return getResult(result);
67     }
68     
69     private static String getResult(String result) {
70         return  result.replace("1", "10").replace("s","joker").replace("b", "JOKER");
71         
72     }
73     private static  int  compare(String pocker1,String pocker2) {
74         char c1=pocker1.charAt(0);
75         char c2=pocker2.charAt(0);
76         String sort="34567891JQKA2sb";
77         return sort.indexOf(c1) - sort.indexOf(c2);
78     }
79     
80 }

 

posted on 2018-03-15 00:25  天地无极,乾坤剑法  阅读(449)  评论(0)    收藏  举报