递归遍历4张牌,进行加减乘除

import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static int result;
    public static List<Integer> list = new ArrayList<>();
    public static List<String> listResult = new ArrayList<>();
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 1);
        map.put("2", 2);
        map.put("3", 3);
        map.put("4", 4);
        map.put("5", 5);
        map.put("6", 6);
        map.put("7", 7);
        map.put("8", 8);
        map.put("9", 9);
        map.put("10", 10);
        map.put("J", 11);
        map.put("Q", 12);
        map.put("K", 13);
        map.put("joker", -1);
        map.put("JOKER", -2);
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String[] a = in.nextLine().split(" ");
            int[] syr = new int[4];
            for (int i = 0; i < 4; i++) {
                if (map.getOrDefault(a[i], -1) < 0) {
                    System.out.println("ERROR");
                    return;
                }
                syr[i] = map.get(a[i]);
            }
            StringBuffer sb = new StringBuffer();
            boolean[] isvisit = new boolean[4];
            Arrays.fill(isvisit, true);
            find24(syr, sb, isvisit, 0, 0);
            System.out.println(listResult.size() == 0 ? "NONE" : listResult.get(0));
        }
    }
    public static void find24(int[] syr, StringBuffer sb, boolean[] isvisit, int result, int count) {
        Map<Integer, String> StrMap = new HashMap<>();
        StrMap.put(1, "A");
        StrMap.put(2, "2");
        StrMap.put(3, "3");
        StrMap.put(4, "4");
        StrMap.put(5, "5");
        StrMap.put(6, "6");
        StrMap.put(7, "7");
        StrMap.put(8, "8");
        StrMap.put(9, "9");
        StrMap.put(10, "10");
        StrMap.put(11, "J");
        StrMap.put(12, "Q");
        StrMap.put(13, "K");
        if (count == 4 && result == 24) {
            listResult.add(sb.toString());
            list.add(result);
            return;
        }
        for (int i = 0; i < 4; i++) {
            if (count == 0) {
                result = syr[i];
                isvisit[i] = false;
                sb.append(StrMap.get(syr[i]));
                find24(syr, sb, isvisit, result, count + 1);
                result = result - syr[i];
                sb.delete(0, sb.length());
                isvisit[i] = true;
            } else if (isvisit[i]) {
                    isvisit[i] = false;
                    int sbLength = sb.length();
                    result = result + syr[i];
                    sb.append("+").append(StrMap.get(syr[i]));
                    find24(syr, sb, isvisit, result, count + 1);
                    result = result - syr[i];
                    sb.delete(sbLength, sb.length());
                    
                    result = result - syr[i];
                    sb.append("-").append(StrMap.get(syr[i]));
                    find24(syr, sb, isvisit, result, count + 1);
                    result = result + syr[i];
                    sb.delete(sbLength, sb.length());
                    
                    result = result * syr[i];
                    sb.append("*").append(StrMap.get(syr[i]));
                    find24(syr, sb, isvisit, result, count + 1);
                    result = result / syr[i];
                    sb.delete(sbLength, sb.length());
                    
                    if (result % syr[i] == 0) {
                        result = result / syr[i];
                        sb.append("/").append(StrMap.get(syr[i]));
                        find24(syr, sb, isvisit, result, count + 1);
                        result = result * syr[i];
                        sb.delete(sbLength, sb.length());
                    }
                    isvisit[i] = true;
                }
            }
        }
}