随机产生的数字1-10之间, J Q K算1 ,出现3张牌,不算11,12,13,只算1电脑随机出4张牌,4张牌经过用户输入和差积商,结果24电脑检验用户输入的算式是否正确 import java.util.*; public class sx3 { public static void main(String[] args) { // 生成随机的四个数字 List<Integer> numbers = generateNumbers(); // 输出随机生成的数字 System.out.println("随机生成的四个数字为:" + numbers); // 获取用户输入的算式 Scanner scanner = new Scanner(System.in); System.out.print("请输入四个数字的算式,使用+、-、*、/运算符:"); String expression = scanner.nextLine(); // 检验用户输入的算式结果是否为24 if (calculate(expression, numbers) == 24) { System.out.println("恭喜你,答案正确!"); } else { System.out.println("很抱歉,答案错误。"); } } // 生成随机的四个数字 private static List<Integer> generateNumbers() { List<Integer> numbers = new ArrayList<>(); Random random = new Random(); for (int i = 0; i < 4; i++) { int number = random.nextInt(9) + 1; numbers.add(number); } return numbers; } // 计算算式的结果 private static double calculate(String expression, List<Integer> numbers) { // 替换J、Q、K为1 expression = expression.replaceAll("J", "1") .replaceAll("Q", "1") .replaceAll("K", "1"); expression = expression.replaceAll(" ", ""); for (int i = 0; i < numbers.size(); i++) { expression = expression.replaceAll(String.valueOf(i + 1), String.valueOf(numbers.get(i))); } return eval(expression); } // 解析并计算表达式的结果 private static double eval(final String str) { // 代码略,与之前提供的代码一致 return new Object() { int pos = -1; int ch; void nextChar() { ch = (++pos < str.length()) ? str.charAt(pos) : -1; } boolean eat(int charToEat) { while (ch == ' ') nextChar(); if (ch == charToEat) { nextChar(); return true; } return false; } double parse() { nextChar(); double x = parseExpression(); if (pos < str.length()) throw new RuntimeException("Unexpected: " + (char) ch); return x; } double parseExpression() { double x = parseTerm(); for (;;) { if (eat('+')) x += parseTerm(); // addition else if (eat('-')) x -= parseTerm(); // subtraction else return x; } } double parseTerm() { double x = parseFactor(); for (;;) { if (eat('*')) x *= parseFactor(); // multiplication else if (eat('/')) x /= parseFactor(); // division else return x; } } double parseFactor() { if (eat('+')) return parseFactor(); // unary plus if (eat('-')) return -parseFactor(); // unary minus double x; int startPos = this.pos; if (eat('(')) { // parentheses x = parseExpression(); eat(')'); } else if ((ch >= '0' && ch <= '9') || ch == '.') { // numbers while ((ch >= '0' && ch <= '9') || ch == '.') nextChar(); x = Double.parseDouble(str.substring(startPos, this.pos)); } else { throw new RuntimeException("Unexpected: " + (char)ch); } return x; } }.parse(); } }