每日总结18
计算题卡
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class suanshi {
private static final int MAX_NUMBER = 100;//定义最大的数字
private static final int MIN_NUMBER = 1;
public static void main(String[] args) {
int num = 50; // 要生成的题目数量
List<String> flashcards = generateFlashcards(num);//用于存储生成的题目,generateFlashcards 方法会生成一定数量的题目,并将它们放入 flashcards 中。
System.out.println("请回答以下口算题:");
for (int i = 0; i < flashcards.size(); i++) {
String flashcard = flashcards.get(i);
System.out.print((i + 1) + ". " + flashcard + " 答案是:");
Scanner scanner = new Scanner(System.in);//接收用户的答案
int userAnswer = scanner.nextInt();
int correctAnswer = evaluateExpression(flashcard);//调用 evaluateExpression 方法计算出正确答案
if (userAnswer == correctAnswer) {
System.out.println("回答正确!");
} else {
System.out.println("回答错误!正确答案是:" + correctAnswer);
}
}
}
private static List<String> generateFlashcards(int num) {
List<String> flashcards = new ArrayList<>();//在 generateFlashcards 方法中创建一个空的 ArrayList 类型的对象 flashcards 用于存储题目
Random random = new Random();
for (int i = 0; i < num; i++) {
int operand1 = random.nextInt(MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;
int operand2 = random.nextInt(MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;
int operand3 = random.nextInt(MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;
int operator = random.nextInt(2); // 0: +, 1: -, 2: *, 3: /
int operator1 = random.nextInt(2); // 0: +, 1: -, 2: *, 3: /
String flashcard = generateFlashcard(operand1, operand2, operand3, operator, operator1);
if (flashcards.contains(flashcard)) {
// 避免重复的题目
i--;
} else {
flashcards.add(flashcard);
System.out.println((i + 1) + ". " + flashcard);
}
}
return flashcards;
}
private static String generateFlashcard(int operand1, int operand2, int operand3, int operator, int operator1) {
String operatorSymbol;
String operatorSymbol1;
switch (operator) {
case 0:
operatorSymbol = "+";
break;
case 1:
operatorSymbol = "-";
break;
default:
throw new IllegalArgumentException("Invalid operator: " + operator);
}
switch (operator1) {
case 0:
operatorSymbol1 = "+";
break;
case 1:
operatorSymbol1 = "-";
break;
default:
throw new IllegalArgumentException("Invalid operator: " + operator1);
}
return operand1 + " " + operatorSymbol + " " + operand2 + " " + operatorSymbol1+" "+operand3+ " = ";
}
private static int evaluateExpression(String flashcard) {//用于计算答案
String[] parts = flashcard.split(" ");
int operand1 = Integer.parseInt(parts[0]);
int operand2 = Integer.parseInt(parts[2]);
int operand3 = Integer.parseInt(parts[4]);
String operatorSymbol = parts[1];
String operatorSymbol1 = parts[3];
int result1;
int result2;
switch (operatorSymbol) {
case "+":
result1 = operand1 + operand2;
break;
case "-":
result1 = operand1 - operand2;
break;
default:
throw new IllegalArgumentException("Invalid operator: " + operatorSymbol);//异常处理机制
}
switch (operatorSymbol1) {
case "+":
result2 = result1 + operand3;
break;
case "-":
result2 = result1 - operand3;
break;
default:
throw new IllegalArgumentException("Invalid operator: " + operatorSymbol1);
}
return result2;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署