首页 > 编程语言 >实现一个自动生成小学四则运算题目的命令行程序

实现一个自动生成小学四则运算题目的命令行程序

时间:2024-09-28 21:25:52浏览次数:1  
标签:10 20 命令行 四则运算 生成 答案 题目 String

这个作业属于哪个课程 计科22级12班
这个作业要求在哪里 结对项目
这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序。

一:

詹洛熙 3122004800
GitHub链接 (https://github.com/Zhannoi/-/tree/main)

二:PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 20 20
· Estimate · 估计这个任务需要多少时间 300 450
Development 开发 100 150
· Analysis · 需求分析 (包括学习新技术) 60 50
· Design Spec · 生成设计文档 20 25
Design Review 设计复审 30 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20
· Design 具体设计 50 60
Coding 具体编码 150 200
Code Review 代码复审 60 50
· Test · 测试(自我测试,修改代码,提交修改) 60 40
Reporting 报告 60 40
· Test Repor 测试报告 30 20
· Size Measurement · 计算工作量 20 10
· Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 10
· 合计 1010 1175

三:设计思路

主要方法

  • main(String[] args):处理命令行参数,选择生成题目或检查答案。

  • generateExercises(int num, int maxNum):生成指定数量的题目并计算答案。

  • generateExpression(int depth, int maxNum):递归生成随机数学表达式。

  • evaluateExpression(String expr):计算数学表达式的值。

  • formatFraction(String result):将计算结果格式化为真分数。

  • checkAnswers(String exerciseFile, String answerFile):读取题目和答案文件,检查正确性。

  • readLinesFromFile(String filename):从文件中读取行。

  • writeToFile(String filename, Set content):将题目或答案写入文件。

  • writeResults(List correct, List wrong):输出检查结果到文件。

函数之间的关系

  • main 方法是程序入口,根据输入参数选择调用 generateExercises 或 checkAnswers。

  • generateExercises 方法负责生成题目,依赖于 generateExpression 来创建表达式,最终使用 evaluateExpression 来计算答案。

  • checkAnswers 方法读取题目和答案,使用 evaluateExpression 计算题目的结果,比较并统计正确与错误的答案。

  • 文件读写操作通过 readLinesFromFile 和 writeToFile 方法进行。

效能分析

关键代码

  • 生成四则运算

    递归生成表达式。depth 参数控制表达式的复杂度,maxNum 控制生成的数字范围。
  • 计算结果

    使用 Java 的 ScriptEngine 计算字符串形式的数学表达式。如果计算成功,返回结果;否则捕获异常并返回 0。
  • 检查校对

    逐行比较题目和答案,并统计正确与错误的题目编号。如果题目数量与答案数量不匹配,输出错误提示。比较时,调用 evaluateExpression 计算每道题目的正确答案,并与用户答案进行比较。

四:测试结果

生成10以内(不包括10)的四则运算题目10道并给出答案(-n 10 -r 10)


检验答案
输入的答案:

结果:

五:项目小结

本项目为开发一个自动生成和检验小学四则运算题目的Java程序。在项目中,提升了Java编程技能,并深入理解了递归和字符串处理。同时,过程中也遇到了一些挑战,如表达式的合法性检查与格式化输出,但通过思考与调试,成功解决了问题。通过本项目,实现了功能目标,为今后类似项目的开展积累了宝贵经验

标签:10,20,命令行,四则运算,生成,答案,题目,String
From: https://www.cnblogs.com/zhannoi/p/18438121

相关文章

  • 结对项目——四则运算
    结对项目——四则运算这个作业属于哪个课程软工22级计科12班这个作业的要求在哪里作业要求这个作业的目标实现四则运算的结对编程项目成员姓名学号GitHub链接分工谭立业3122004365github项目功能的基本实现,博客的编写罗锴佳3122001905gith......
  • 2023龙信题目(部分)
    借着平台开出来的测试题目,复现下23的龙信,虽然24的就开始了2333。题目应该也不完整,感觉备份文件还是很坑的。移动终端取证(共12题,合计24分)1.请分析涉案手机的设备标识是_______。(标准格式:12345678)850696252.请确认嫌疑人首次安装目标APP的安装时间是______。(标准格式:2023-09-13......
  • 实现一个自动生成小学四则运算题目的命令行程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标通过实现一个自动生成小学四则运算题目的命令行程序提高软件开发能力姓名李佳聪......
  • 基于python的四则运算自动生成的命令行程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标基于python的四则运算自动生成的命令行程序团队成员姚彬彬3122006324一.Githu......
  • 结对项目:自动生成小学四则运算题目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标结对实现一个自动生成小学四则运算题目的命令行程序项目一、项目开发人员以及仓库地......
  • [题目记录]一本通高手训练-01背包
    题意有\(n\)个物品,每个物品体积为\(s_i\),价值为\(v_i\),求背包容量为\(1,2,\cdotsm\)时最大价值.\(n\le1e6,m\le1e5,s\le300,v\le1e9\)时空限制\(5s,512MB\)题解普通01背包复杂度\(O(nm)\),无法满足\(n\le1e6,m\le1e5\).发现\(s\le300\),可以考虑......
  • Pulsar 入门实战(4)--命令行使用
    本文主要介绍Pulsar的命令行使用,相关的环境及软件信息如下:CentOS7.9.2009、Pulsar3.3.0、Java17.0.10。1、环境配置在 conf/client.conf中配置Pulsar相关地址:webServiceUrl=http://10.49.196.30:8080,10.49.196.31:8080,10.49.196.32:8080brokerServiceUrl=pulsar:/......
  • 2024 年全国大学生新质生产力大赛—数学建模赛项题目 B:金融违规交易的大数据分析 问题
    针对问题三,我们可以采取以下步骤进行聚类分析,并统计不同国家的涉案人员数量和交易金额总数。以下是具体的分析思路和方法:1.数据预处理清洗数据:确保数据中没有缺失值,并将需要的字段转换为合适的数据类型。选择聚类特征:选择与洗钱风险评分相关的指标作为聚类特征,例如交易金......
  • 结对项目——小学四则运算题目自动生成器
    这个作业属于哪个课程<计科22级34班>这个作业要求在哪里<结对项目>这个作业的目标<实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)>团队成员<杨富国(3122004587)、李思柔(3222004638)>Github项目地址https://github.com/wWchao-111......
  • 四则运算
    packagechuti;importjava.util.Scanner;publicclassDemo{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);for(inti=1;i<=30;i++){inta=(int)Math.round(Math.random()*100);intb=(int)Math.round(Math.rando......