题目求解思路:
1.判断是否可以进行比较
2.具体判断大小
判断大小的方法:
1.较为繁琐的方法:取手牌一不同的张数情况进行具体对比输出结果;
2.较为便捷的方法:优先判断对王、炸弹的情况,其他情况直接对比第一位数字即可。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
String handCard1 = input.split("\\-")[0];
String handCard2 = input.split("\\-")[1];
String[] cards1 = handCard1.split(" ");
String[] cards2 = handCard2.split(" ");
//准备牌大小顺序
List<String> list = Arrays.asList("3", "4", "5", "6", "7", "8", "9", "10", "J",
"Q", "K", "A", "2", "joker", "JOKER");
//判断是否存在比价关系
if (!isComparable(cards1, cards2)) {
System.out.println("ERROR");
return ;
}
//判断大小
if(isDoubleKing(cards1)){
System.out.println(handCard1);
}else if(isDoubleKing(cards2)){
System.out.println(handCard2);
}else if(isBoom(cards1) && isBoom(cards2)){
System.out.println(list.indexOf(cards1[0]) > list.indexOf(
cards2[0]) ? handCard1 : handCard2);
}else if(isBoom(cards1)){
System.out.println(handCard1);
}else if(isBoom(cards2)){
System.out.println(handCard2);
}else {
System.out.println(list.indexOf(cards1[0]) > list.indexOf(
cards2[0]) ? handCard1 : handCard2);
}
// if (cards1.length == 1) {//若手牌一仅1张牌
// if (cards2.length == 1) {
// System.out.println(list.indexOf(cards1[0]) > list.indexOf(
// cards2[0]) ? handCard1 : handCard2);
// } else {
// System.out.println(handCard2);
// }
// } else if (cards1.length == 2) { //若手牌一有2张牌
// if (isDoubleKing(cards2) ) {
// System.out.println(handCard2);
// } else if (isDoubleKing(cards1)) {
// System.out.println(handCard1);
// } else if(isBoom(cards2)){
// System.out.println(handCard2);
// } else {
// System.out.println(list.indexOf(cards1[0]) > list.indexOf(
// cards2[0]) ? handCard1 : handCard2);
// }
// }else if(cards1.length==3){//若手牌一有3张牌
// if(cards2.length==3){
// System.out.println(list.indexOf(cards1[0]) > list.indexOf(
// cards2[0]) ? handCard1 : handCard2);
// }else{
// System.out.println(handCard2);
// }
// }else if(cards1.length==4){//若手牌一有4张牌
// if(isBoom(cards2)){
// System.out.println(list.indexOf(cards1[0]) > list.indexOf(
// cards2[0]) ? handCard1 : handCard2);
// }else if(isDoubleKing(cards2)){
// System.out.println(handCard2);
// }else{
// System.out.println(handCard1);
// }
// }else if(cards1.length==5){//若手牌一有5张牌
// if(isBoom(cards2)||isDoubleKing(cards2)){
// System.out.println(handCard2);
// }else{
// System.out.println(list.indexOf(cards1[0]) > list.indexOf(
// cards2[0]) ? handCard1 : handCard2);
// }
// }
}
public static boolean isComparable(String[] cards1, String[] cards2) {
//牌的个数相同,可比较
if (cards1.length == cards2.length) return true;
//存在炸弹和对王,可比较
if (isDoubleKing(cards1) || isDoubleKing(cards2) || isBoom(cards1) ||
isBoom(cards2)) return true;
return false;
}
//是否为对王
public static boolean isDoubleKing(String[] cards) {
if (cards.length == 2 &&
((cards[0].equals("joker") && cards[1].equals("JOKER")) ||
(cards[1].equals("joker") && cards[0].equals("JOKER")))) return true;
return false;
}
//是否为炸弹
public static boolean isBoom(String[] cards) {
if (cards.length == 4 &&
(cards[0].equals(cards[1]) && cards[1].equals(cards[2]) &&
cards[2].equals(cards[3]))) return true;
return false;
}
}

京公网安备 11010502036488号