加减法Java(实训)

加减法Java实训


题目要求:

小学数学辅助教学软件4编写一个小学数学辅助教学软件,主要是测试小学低年级学生的两位数的加减法的计算能力。
要求:(1)用户可以选择练习或测试方式,可以选择 1位数的加法或减法,两位数的加法或减法,或者混合计算。
(2)运算题目随机生成。
(3)练习或测验完成后,给出得分。


完整代码

import java.util.Scanner;
import java.util.Random;

public class MathAssistant {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象,用于接收用户输入
        System.out.println("欢迎使用小学数学辅助教学软件");
        System.out.println("---------------------------");
        System.out.println("请选择模式:");
        System.out.println("1.练习");
        System.out.println("2.测试");
        int mode = scanner.nextInt(); // 输入模式,1表示练习,2表示测试
        System.out.println("---------------------------");
        System.out.println("请选择运算类型:");
        System.out.println("1.加法");
        System.out.println("2.减法");
        System.out.println("3.混合");
        int operatorType = scanner.nextInt(); // 输入运算类型,1表示加法,2表示减法,3表示混合运算
        System.out.println("---------------------------");
        System.out.println("请选择数字位数:");
        System.out.println("1.一位数");
        System.out.println("2.两位数");
        int digits = scanner.nextInt(); // 输入数字位数,1表示一位数,2表示两位数
        System.out.println("---------------------------");
        System.out.println("请输入题目数量:");
        int totalProblems = scanner.nextInt(); // 输入题目数量,表示要做几道题目

        int score = 0; // 计分器,初始化为0分
        Random random = new Random(); // 创建Random对象,用于生成随机数

        // 循环生成题目,做题,判断正误并计分
        for (int i = 0; i < totalProblems; i++) {
            int number1 = generateRandomNumber(digits); // 生成随机的第一个数字
            int number2 = generateRandomNumber(digits); // 生成随机的第二个数字
            char operator = convertOperator(operatorType, random.nextInt(2)); // 根据运算类型和随机数生成运算符
            int answer = calculateAnswer(operator, number1, number2); // 根据运算符、第一个数字、第二个数字计算答案
            String problem = generateMathProblem(number1, number2, operator); // 根据数字和运算符生成题目

            System.out.print(problem); // 输出题目
            int userAnswer = scanner.nextInt(); // 接收用户输入的答案
            if (userAnswer == answer) { // 判断用户答案是否正确
                score++; // 如果答案正确,计分器加1
                System.out.println("回答正确!");
            } else {
                System.out.println("回答错误...");
            }
        }

        System.out.println("您的得分:" + score + "/" + totalProblems); // 输出最终得分
    }

    public static int generateRandomNumber(int digits) { // 生成随机数字的方法
        Random random = new Random(); // 创建Random对象,用于生成随机数
        int max = (int) Math.pow(10, digits) - 1; // 计算最大值  用于确定生成随机数范围
        int min = (int) Math.pow(10, digits - 1); // 计算最小值
        return random.nextInt((max - min) + 1) + min; // 返回生成的随机数
    }

    public static char convertOperator(int operatorType, int operatorIndex) { // 生成随机运算符的方法
        if (operatorType == 1) { // 如果是加法
            return '+'; // 返回加号
        } else if (operatorType == 2) { // 如果是减法
            return '-'; // 返回减号
        } else { // 如果是混合运算
            if (operatorIndex == 0) { // 如果随机数为0
                return '+'; // 返回加号
            } else { // 如果随机数为1
                return '-'; // 返回减号
            }
        }
    }

    public static String generateMathProblem(int number1, int number2, char operator) { // 生成数学问题的方法
        return number1 + " " + operator + " " + number2 + " = "; // 拼接生成数学问题,如“1 + 2 = ”
    }

    public static int calculateAnswer(char operator, int number1, int number2) { // 计算答案的方法
        int answer = 0; // 初始化答案为0
        if (operator == '+') { // 如果是加法
            answer = number1 + number2; // 执行加法运算
        } else { // 如果是减法
            answer = number1 - number2; // 执行减法运算
        }
        return answer; // 返回答案
    }
}

解析

  • 在程序中,创建了4个方法:

    1. generateRandomNumber方法用于生成随机数字;参数digits表示数字的位数。
    2. convertOperator方法用于确定运算符;参数operatorType表示运算类型,如果是加法,则返回加号“+”,如果是减法,则返回减号“-”,如果是混合运算,则随机返回“+”或“-”;参数operatorIndex表示随机序号索引。
    3. generateMathProblem方法用于生成随机的数学问题;参数number1表示第一个数字,number2表示第二个数字,operator表示运算符。
    4. calculateAnswer方法用于计算答案;参数operator表示运算符,number1表示第一个数字,number2表示第二个数字。

    main方法中,我们首先获取用户的输入,并根据用户的输入生成随机的数学问题。然后,我们让用户回答每个问题,并记录他们正确的答案。最后,我们输出他们的得分并结束程序。

注意事项:

  • 你这里的mode也就是用户选择的模式好像没有用,怎么肥四?

    回答: 我感觉测试和练习好像没什么区别都是生成两个数 然后运行考试逻辑 所以这里的mode只是一个形式

  • int max = (int) Math.pow(10, digits) - 1; 这是什么意思?

回答:这行代码是计算生成随机数字的最大值的意思。它使用Math.pow()方法来计算10的digits次方,然后将结果转换为int类型,并减去1,得到最大值。例如,如果输入的digits为2,则最大值为99。这个最大值将用于生成随机数字的范围,确保生成的随机数字不超过指定位数的范围。

关于分工

  • 一号:(易)

    main函数编写 负责打印选项 以及用户选择结果的保存

    generateRandomNumber函数的编写 用于生成随机数

  • 二号:(难一丢丢)

    convertOperator generateMathProblem 函数编写 以及负责代码的整合 打通逻辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/254432.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

『 Linux 』重新理解挂起状态

文章目录 &#x1f984; 前言新建状态 &#x1f40b;挂起状态 &#x1f40b;唤入唤出 &#x1f40b;进程与操作系统间的联系 &#x1f40b; &#x1f984; 前言 『 Linux 』使用fork函数创建进程与进程状态的查看中提到了对挂起状态的一个理解&#xff1b; ​ 挂起状态相比于其…

爬虫练习-获取imooc课程目录

代码&#xff1a; from bs4 import BeautifulSoup import requests headers{ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0, }id371 #课程id htmlrequests.get(https://coding.imooc.com/class/chapter/id.html#Anchor,head…

kubernetes 学习笔记

1. Kubernetes 介绍 1.1 应用部署方式的演变 在部署应用程序的方式上&#xff0c;主要经理了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上。虚拟化部署&#xff1a;可以在一台物理机上运行多个虚拟机&#xff0c;每个虚…

高可用接入层技术演化及集群概述

集群概述 集群的介绍及优势 集群&#xff1a;将多台服务器通过硬件或软件的方式组合起来&#xff0c;完成特定的任务&#xff0c;而这些服务器对外表现为一个整体。集群的优势 高可靠性&#xff1a;利用集群管理软件&#xff0c;当主服务器故障时&#xff0c;备份服务器能够自…

Cesium 加载 Geoserver WMS 图层以及条件查询和切换图层样式

Cesium 加载 Geoserver WMS 图层以及条件查询和切换图层样式 图层样式核心代码完整代码&#xff1a;在线示例 Cesium 加载 Geoserver WMS 图层&#xff0c;在实际项目中常常会遇到&#xff0c;需要对图层进行过滤&#xff0c;这里介绍一下过滤方法。 Cesium Geoserver 图层条件…

AirPodsPro3爆料汇总,2025年发布?

不止是iPhone&#xff0c;苹果的AirPods Pro系列耳机也是非常受用户青睐的一款产品&#xff0c;相信不少果粉都非常期待它的升级换代。 第一代AirPods Pro于2019年10月发布&#xff0c;第二代AirPods Pro于2022年9月发布&#xff0c;按照这个时间线来看的话&#xff0c;第三代A…

《Linux C编程实战》笔记:进程操作之创建进程

进程是一个动态的实体&#xff0c;是程序的一次执行过程。进程是操作系统资源分配的基本单位。 以下是一些概念&#xff0c;我就直接抄书了 进程是操作系统的知识&#xff0c;简单理解的话&#xff0c;你写的代码运行起来算一个进程&#xff1f; 创建进程 每个进程由进程ID号…

在vue项目中,数据已经在页面渲染,但在后续操作时获取不到数据

如下图 产生这个问题的原因 异步问题 如何解决 方法一&#xff1a;可以将其存放在一个setTimeout里面&#xff08;利用一个极小的延迟来获取数据&#xff09;&#xff0c;如下图 效果 方法二&#xff1a;将操作放入axios里面&#xff0c;如下图

昂首资本发现原油价差这样用,难怪银行这么富

难怪银行这么富&#xff0c;原来是发现一个稳定产生利益的投资策略。虽然这个利润可能看起来比较少。但是昂首资本需要提醒各位投资者的是&#xff1a;首先&#xff0c;这个策略几乎没有风险。第二&#xff0c;这是一个可以复制的投资策略。 下面昂首资本就通过原油的价差进行实…

开发信怎么写回复率高?写外贸邮件的技巧?

如何打造高回复率的开发信&#xff1f;有效的开发信模板推荐&#xff1f; 如何写一封能够引起客户兴趣并提高回复率的开发信变得至关重要。开发信是建立联系、促进销售和扩大业务的关键工具之一。蜂邮EDM将探讨一些关键策略&#xff0c;帮助你提高开发信的回复率&#xff0c;确…

爬虫图片验证码处理

图片验证码处理 目前&#xff0c;很多网站为了防止爬虫爬取&#xff0c;登录时需要用户输入验证码。下面我们学习如何在爬虫程序中识别验证码。 其中包含验证码。 页面中的验证码图片对应一个<img>元素&#xff0c;即一张图片&#xff0c;浏览器加载完登录页面后&#…

Spring 6(二)【IOC原理】

前言 IOC 是Spring的两大核心概念之一&#xff0c;它是一种思想&#xff0c;需要极其熟练的掌握。 今日摘录&#xff1a; 低能无聊的人太多。说他们勤勉&#xff0c;不过是因困为不会合理分配时间&#xff1b;说他们积极&#xff0c;不过是逃避其他困难工作而已。即便说工作只…

DNN二分类模型

import os import datetime#打印时间 def printbar():nowtime datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S)print("\n"""*8 "%s"%nowtime)#mac系统上pytorch和matplotlib在jupyter中同时跑需要更改环境变量 os.environ["KMP_DUP…

【网络安全】-Linux操作系统—操作系统发展历史与Linux

文章目录 操作系统发展历史初期的操作系统分时操作系统个人计算机操作系统 Linux的诞生UNIX与GNU项目Linux内核的创建 Linux的特点开放源代码多样性社区支持 Linux的应用服务器和超级计算机嵌入式系统桌面系统 总结 操作系统发展历史 操作系统&#xff08;Operating System&am…

详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第五节 (基于uni-app封装鸿蒙接口请求库)

随着鸿蒙系统的兴起,越来越多的app会采用鸿蒙开发。而鸿蒙开发必不可少的就是调用各种接口服务。为了简化接口的调用流程,我们通常会做一层封装。今天就来讲解一下,如何用uni-app封装鸿蒙的接口请求库。 一、新建项目 首先我们要新建一个鸿蒙项目啦&#xff01;当然选择第一个…

neuq-acm预备队训练week 9 P1119 灾后重建

解题思路 本题可以用最短路算法——Floyd AC代码 #include<bits/stdc.h> #define inf 1e9 using namespace std; const int N 2e2 50; int n, m, q, now 0, a, b, c, t[N], G[N][N];int main() {scanf("%d%d", &n, &m);for(int i 0;i<n;i)sc…

044.Python异常处理_手动抛出异常自定义异常

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

ubuntu 磁盘挂载

1.前提 给自己的计算机加了一个新硬盘&#xff0c;怎么在ubuntu中使用呢 特别提示&#xff01;对磁盘操作存在一定丢失数据的风险&#xff0c;本篇是在一个新购买的硬盘上进行操作&#xff01;如果你使用的是一个带数据的硬盘&#xff0c;请勿参考本篇文章&#xff01; 2.找…

解决:AttributeError: module ‘scipy.misc’ has no attribute ‘imread’

解决&#xff1a;AttributeError: module ‘scipy.misc’ has no attribute ‘imread’ 文章目录 解决&#xff1a;AttributeError: module scipy.misc has no attribute imread背景报错问题报错翻译报错位置代码报错原因解决方法方法一 scipy版本回退&#xff08;不推荐&#…

记录 | Visual Studio报错:const char*类型的值不能用于初始化char*类型

Visual Studio 报错&#xff1a; const char *”类型的值不能用于初始化“char *”类型的实体错误 解决办法&#xff1a; 1&#xff0c;强制类型转换&#xff0c;例如&#xff1a; char * Singer::pv[] {(char*)"other", (char*)"alto", (char*)"c…
最新文章