题目里的单排应该就是一张牌,这种的话只用比较长度和最低位,比较简单直接。我一开始想的单排是257这种,这种很麻烦。 anyway,根据题目的意思。

  1. 是王炸,直接输出。不是则比较两副牌的数量。
  2. 如果都为4,则是两幅炸,输出较大的一个。
  3. 如果只有其中一个是4,则输出这个。
  4. 如果都不是炸,则直接比较最小位
  5. 无法比较,ERROR
import java.util.*;


public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();
        String[] cards = input.trim().split("-");
        String output = max(cards[0], cards[1]);
        System.out.println(output);
    }
    
    public static String max(String cards1, String cards2){
        Map<String,Integer> map = new HashMap<String, Integer>(){
            {
                put("3",3);
                put("4",4);
                put("5",5);
                put("6",6);
                put("7",7);
                put("8",8);
                put("9",9);
                put("10",10);
                put("J",11);
                put("Q",12);
                put("K",13);
                put("A",14);
                put("2",15);
                put("joker",16);
                put("JOKER",17);
            }
        }; 
        String[] c1 = cards1.split(" ");
        String[] c2 = cards2.split(" ");
      //王炸
        if(cards1.equals("joker JOKER")){
            return cards1;
        }
        else if(cards2.equals("joker JOKER")){
            return cards2;
        }
      //都是炸弹
        else if(c1.length == c2.length && c1.length == 4){
            return map.get(c1[0]) > map.get(c2[0]) ? cards1 : cards2;      
        }
      //有一个是炸弹
        else if(c1.length == 4){
            return cards1;      
        }      
        else if(c2.length == 4){
            return cards2;
        }
      //其他的
        else if(c1.length == c2.length){
            return map.get(c1[0]) > map.get(c2[0]) ? cards1 : cards2; 
        }
      //无法比较
        else {
            return "ERROR";
        }                
    }
}