import java.util.*; public class Game24 { 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(); 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) { 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(); } }
随机输入四个数字,通过加减乘除运算这四个数字,得到的结果为24
于 2023-11-01 16:38:25 首次发布