package generator; import java.util.List; import java.util.Collections; public class Problem { private final String expression; private final double result; private final List options; private final String correctAnswerOption; public Problem(String expression, double result, List options, String correctAnswerOption) { this.expression = expression; this.result = result; this.options = options; this.correctAnswerOption = correctAnswerOption; } public String getQuestionText() { return "计算: " + expression + " = ?"; } public String getExpression() { return expression; } public List getOptions() { return Collections.unmodifiableList(options); } public String getCorrectAnswerOption() { return formatResult(result); } private String formatResult(double result) { if (Double.isNaN(result)) { return "Error"; } if (Math.abs(result - Math.round(result)) < 0.0001) { return String.valueOf((int) Math.round(result)); } return String.format("%.2f", result); } public double getResult() { return result; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(getQuestionText()).append("\n"); char optionChar = 'A'; for (String option : options) { sb.append(optionChar++).append(". ").append(option).append(" "); } sb.append("\n正确答案: ").append(correctAnswerOption); return sb.toString(); } }