java生成不重复的算式_ExercisesGenerator
时间: 2023-06-20 16:09:13 浏览: 148
您好,生成不重复的数学算式是一个比较有意思的问题,可以使用Java编写一个算式生成器来实现。以下是一个简单的实现:
```java
import java.util.ArrayList;
public class ExercisesGenerator {
private static final int MAX_OPERAND = 100; // 操作数的最大值
private static final int MAX_RESULT = 1000; // 算式结果的最大值
private static final int MAX_OPERATORS = 3; // 最大操作符数量
private static final int MAX_EXERCISES = 100; // 最大题目数量
private ArrayList<String> exercises; // 存储算式的列表
public ExercisesGenerator() {
exercises = new ArrayList<String>();
}
public void generateExercises() {
for (int i = 0; i < MAX_EXERCISES; i++) {
String exercise = generateExercise();
if (!exercises.contains(exercise)) {
exercises.add(exercise);
}
}
}
public void printExercises() {
for (String exercise : exercises) {
System.out.println(exercise);
}
}
private String generateExercise() {
int operand1 = (int) (Math.random() * MAX_OPERAND) + 1;
int operand2 = (int) (Math.random() * MAX_OPERAND) + 1;
char operator1 = generateOperator();
char operator2 = generateOperator();
int result = calculateResult(operand1, operand2, operator1, operator2);
return operand1 + " " + operator1 + " " + operand2 + " " + operator2 + " " + "= " + result;
}
private char generateOperator() {
int operatorIndex = (int) (Math.random() * 4);
char[] operators = { '+', '-', '*', '/' };
return operators[operatorIndex];
}
private int calculateResult(int operand1, int operand2, char operator1, char operator2) {
int result = 0;
switch (operator2) {
case '+':
result = operand1 + operand2;
break;
case '-':
result = operand1 - operand2;
break;
case '*':
result = operand1 * operand2;
break;
case '/':
result = operand1 / operand2;
break;
}
switch (operator1) {
case '+':
result += (int) (Math.random() * MAX_RESULT) + 1;
break;
case '-':
result -= (int) (Math.random() * MAX_RESULT) + 1;
break;
case '*':
result *= (int) (Math.random() * MAX_OPERAND) + 1;
break;
case '/':
result /= (int) (Math.random() * MAX_OPERAND) + 1;
break;
}
return result;
}
public static void main(String[] args) {
ExercisesGenerator generator = new ExercisesGenerator();
generator.generateExercises();
generator.printExercises();
}
}
```
这个算式生成器可以生成100道不重复的算式,每个算式包含两个操作数和两个操作符,以及一个结果。其中,操作数和结果的范围为1到100,操作符为加、减、乘、除中的一个,且每个算式最多有两个操作符。生成算式时,首先从1到100中随机生成两个操作数,然后随机生成两个操作符,并根据操作符计算出结果。最后将算式转换为字符串,存储在一个列表中。如果生成的算式已经存在于列表中,则不存储这个算式,直到生成100道不重复的算式为止。
您可以根据需要调整参数,例如调整最大操作数和最大结果的值,以及算式数量。同时,您也可以根据需要修改算式生成的逻辑,例如增加或减少操作符数量,或者增加其他的数学运算。
阅读全文