【公基】口算提速,java 自动生成:加、减、乘、除、混合运算题目

2023-11-03

效果图

  • 先确定训练那种运算
  • 以及训练多少题:

  • 具体运算:

  • 结果分析

代码

  • 废话不多说,直接上代码
package 行测;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

public class CalculateByMain {
	static enum CalculateType {
		Add,
		Subtract,
		Multiply,
		Divide,
		Mix
	}
	
	public static CalculateType chooseType() {
        System.out.println("请输入出题类型(仅输入数字)\n1:加法\n2:减法\n3、乘法\n4:除法\n5:随机");
        Scanner input = new Scanner(System.in);
        int userResult = input.nextInt();
        switch(userResult) {
        case 1:
        	return CalculateType.Add;
        case 2:
        	return CalculateType.Subtract;
        case 3:
        	return CalculateType.Multiply;
        case 4:
        	return CalculateType.Divide;
        case 5:
        	return CalculateType.Mix;
        }
        System.out.println("类型错误,请重试:");
        return chooseType();
	}
    
    public static int attachSymbolByType(CalculateType type) {
    	int symbol = 0;
    	if(type == CalculateType.Add) {
    		return 0;
    	} else if(type == CalculateType.Subtract) {
    		return 1;
    	} else if(type == CalculateType.Multiply) {
    		return 2;
    	} else if(type == CalculateType.Divide) {
    		return 3;
    	} else if(type == CalculateType.Mix) {
            Random r = new Random();
            return r.nextInt(3); // 生成[0,10]区间的整数
    	}
    	return 0;
    }
    
    public static Boolean doCalculate(CalculateType type) {
    	Boolean isRight = false;
        Random r = new Random();
        int figuresFirst = r.nextInt(899) + 100; // 生成[0,10]区间的整数
        int figuresSecond = r.nextInt(899) + 100; // 生成[0,10]区间的整数
        int symbol = attachSymbolByType(type);
        
        String formula = "";
        formula+=figuresFirst;
        double formulaResult = 0;

        if (symbol == 0) {
            formula += " + ";
            formulaResult = figuresFirst + figuresSecond;
        }else if (symbol == 1) {
            formula += " - ";
            formulaResult = figuresFirst - figuresSecond;
        }else if (symbol == 2) {
            formula += " * ";
            formulaResult = figuresFirst * figuresSecond;
        }else if (symbol == 3) {
            formula += " / ";
            formulaResult = (float) figuresFirst / figuresSecond * 1.0;
        }
    	
        formula += figuresSecond;
        formula += " = ";

        System.out.println(formula);
        Scanner input = new Scanner(System.in);
        double userResult = input.nextDouble();

    	NumberFormat nf = NumberFormat.getNumberInstance();
    	nf.setMaximumFractionDigits(3);
        isRight = Math.abs(formulaResult-userResult) < 0.1;
        System.out.print(isRight ? "\033[1;96m" + "√ 正确 罒ω罒 " +"\033[m" : "\033[1;91m" + "X 错误 (;′⌒`) "+"\033[m");
        System.out.println("答案是:" + nf.format(formulaResult));
        
        return isRight;
    }
    
    public static int scanQuestionNum() {
        System.out.println("你要刷多少题?请输入:");
        Scanner input = new Scanner(System.in);
        return input.nextInt();
    }

    public static void main(String[] args) {
    	CalculateType type = chooseType();
    	int questionNum= scanQuestionNum();
    	int rightNum = 0;
    	
    	int totalTime = 0;
    	for(int i = 0; i < questionNum; i++) {
            System.out.println("第"+(i+1)+"题,"+"还剩"+(questionNum-i-1)+"题:");
        	long frontTime = System.currentTimeMillis();
    		if(doCalculate(type)) {rightNum++;}
        	long behindTime = System.currentTimeMillis();
        	long usageTime = (behindTime - frontTime)/1000;
        	totalTime+=usageTime;
            System.out.println("用时:"+usageTime+"秒");
    	}
    	NumberFormat nf = NumberFormat.getNumberInstance();
    	nf.setMaximumFractionDigits(2);
        System.out.println("恭喜完成!正确率:" + nf.format((float)rightNum/questionNum*100) + "%");
        System.out.println("总用时:"+totalTime+"秒,平均用时"+totalTime/questionNum+"秒");
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【公基】口算提速,java 自动生成:加、减、乘、除、混合运算题目 的相关文章

  • 用最小二乘法OLS做回归,并解读结果

    使用OLS做回归 使用OLS做多元线性回归拟合 from sklearn import linear model cross validation feature selection preprocessing import statsmo
  • MySQL-索引与事务

    MySQL 关于索引与事务知识点 无聊 突然想尝试着默写一下索引与事务中的知识点 顺带总结总结面试常考问题 默写完在文章后面继续补充默写中没有提及的重要知识点 单纯的尝试尝试看能记住多少 索引 为什么要使用索引 面试中如果遇到这样的概念问题
  • 70.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度

    char型指针 当没有带号时 指的是内存的某一个位置 带号时 指的是这个位置上存储的内容 当它指向一个字符串时 指向的是字符串的第一位 当p 的时候 就是指针往后挪一位的意思 include
  • 毕业3年,Java程序员年薪拿到20万,他是怎么做到的?

    我14年专科毕业 到今已有3个年头 期间入职过两家公司 很多次学习技术 都是走到临门一脚 然后就没有往下了 我和大牛之间的差距就是 别人看完了源码 而我只是会用 这是我20170412做的一次笔记 最后记住就是有多少种设计模式 系统的了解一
  • Revit门窗标记的BoundingBox之Transform转换

    最近在尝试门窗标记与主体的位置匹配 在获取标记 IndepentTag 的BoundingBoxXYZ时 发现但凡是倾斜的标记 所获取的BoundingBoxXYZ永远是正交的 这就无法计算出标记相对于门窗主体图元方向的实际长度和高度 有没
  • 1716 计算力扣银行的钱

    题目描述 Hercy 想要为购买第一辆车存钱 他 每天 都往力扣银行里存钱 最开始 他在周一的时候存入 1 块钱 从周二到周日 他每天都比前一天多存入 1 块钱 在接下来每一个周一 他都会比 前一个周一 多存入 1 块钱 给你 n 请你返回
  • 计算机网络之Token、JWT

    文章目录 计算机网络之Token JWT 1 登录验证的方式 2 token定义 3 taken刷新 4 JWT跨域认证 5 JWT跨域认证起源 6 JWT原理 7 JWT的数据结构 7 1介绍 7 2Header 7 3Playload
  • 14.大数据学习之旅——HBASE表设计&HBase优化

    HBASE表设计 Rowkey设计 Rowkey是不可分割的字节数 按字典排序由低到高存储在表中 在设计HBase表时 Rowkey设计是最重要的事情 应该基于预期的访问模式来为Rowkey建 模 Rowkey决定了访问HBase表时可以得
  • Nginx的负载均衡 - 整体架构

    Nginx版本 1 9 1 我的博客 http blog csdn net zhangskd 什么是负载均衡 我们知道单台服务器的性能是有上限的 当流量很大时 就需要使用多台服务器来共同提供服务 这就是所谓的集群 负载均衡服务器 就是用来把
  • mysql属于dql语句的是_mysql学习日记——DQL语句

    DQL 查询语句 select字段列表from表名列表where条件列表group by分组字段having分组之后的条件order by排序 limit 分页限定 基础查询 1 多个字段的查询 select 字段名1 字段名2 from
  • Visual Studio 2015 的安装和使用

    VS2015 是现在微软公司最新也是最强大的IDE 可以开发C C VB Android iOS等多种语言和平台的应用程序 而且 对应的免费版本VS2015 社区版 也出来了 如果只是为了初学或者是想尝试一下VS的同学 可以下载VS2015
  • 网络工程师干货:华为设备故障管理命令大全

    alarm 系统视图 命令功能 alarm命令用来进入告警管理视图 命令格式 alarm 使用实例 进入告警管理视图
  • selenium处理网页下拉加载数据爬取并存入excel

    前言 之前有个同学询问我是否能够爬取知乎的全部回答 当初只会Scrapy无法实现下拉的数据全部加载 后来在意外中接触了selenium的自动化测试 看出了selenium的模拟能力的强大 而昨天有个同学问我能否爬取中国工商银行远程银行的精彩
  • 编译ROS PCL工程时出现找不到包的问题

    编译PCL工程时 如果出现类似这样的问题 Add the installation prefix of visualization to CMAKE PREFIX PATH or set 则意味着编译器找不到相关包 则我们可以通过添加 fi
  • 基于qt的人脸识别

    文章目录 前言 一 Ubuntu中运行效果 二 代码部分 1 工程结构 2 camera代码 移植到linux板子上面的思路 前言 提示 这里可以添加本文要记录的大概内容 今天准备用qt做一个人脸识别功能 同时看能不能移植到板子上面 提示
  • 电子电路技术基础之频率响应

    电子电路技术基础之放大电路的频率响应 文章目录 电子电路技术基础之放大电路的频率响应 前言 一 频率响应概述 基本概念 二 波特图 总结 前言 郑老师模电课听课笔记 23 一 频率响应概述 基本概念 高通电路 传输特性 下限截止频率 最大值
  • 如何理解Adam算法(Adaptive moment estimation)?

    作者 薰风初入弦 链接 https www zhihu com question 323747423 answer 790457991 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 文章和论文看不懂 通常有
  • QT问题解决: multiple definition of XXX

    参考这个链接的https blog csdn net liyuefeilong article details 44071053方法处理后 问题还是存在 打开 pro文件 SOURCES 下发现某个Cpp文件重复了 这个是添加已存在文件时I
  • 剪贴板在当前服务器不可映射,关于rdpclip.exe进程问题 导致远程桌面剪贴板无法使用的问题...

    我们来讨论下你这句话 由于网络波动造成的不稳定 导致进行文件传输时进程中断 再次传输时则不能进行文件传输 再次传输时则不能进行文件传输 这个的意思就是网络原因导致某次文件传输失败后 整个服务就不能用了吗 我理解rdpclip exe这个服务

随机推荐

  • UE4 低配优化

    总结一下UE4的低配优化 1 比较快的方式 修改引擎可扩展设置 关于Scalability Setting的详细说明 https docs unrealengine com en us Engine Performance Scalabil
  • 机器学习sklearn-多项式回归

    目录 线性关系 线性模型和非线性模型 利用线性回归解决非线性问题 多项式回归 线性模型 线性关系 首先 线性 这个词用于描述不同事物时有着不同的含义 我们最常使用的线性是指 变量之间的线性关系 linear relationship 它表示
  • DirectShow对avi视频按帧设置慢放功能

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见 一起讨论 DirectShow对avi视频按帧设置慢放功能需要视频源支持帧操作 可以通过IMediaSeeking IsFormatS
  • 参加蓝桥杯的经历

    蓝桥杯 我参加蓝桥杯是一个巧合 我是专科生 额 过往经历就不说了 反正就是以前没好好学习然后就去专科读书了 不过也不怎么后悔 高考完成绩出来 那时候我都有点想去新东方的来着 我一个发小的姐姐学的计算机 然后工资蛮高 他家准备让他学计算机 然
  • Odd Even Linked List

    Given a singly linked list group all odd nodes together followed by the even nodes Please note here we are talking about
  • 排序算法比较图表

    一目了然
  • Python爬取招聘信息,并且存储到MySQL数据库中

    前面一篇文章主要讲述 如何通过Python爬取招聘信息 且爬取的日期为前一天的 同时将爬取的内容保存到数据库中 这篇文章主要讲述如何将python文件压缩成exe可执行文件 供后面的操作 这系列文章主要是最近研究了数据库的定时计划备份 联系
  • java多条件判断_Java中,&&与&,

    java的逻辑运算符 1 和 都是表示与 区别是 只要有一个条件不一样就是不满足 如果第一个条件就是不满足就不判断后面的条件 而 要对所有的条件都进行判断 看下面的程序 输出的是 没有报错 而将 改为 就会如下错误 Exception in
  • Flutter 通过 VS code 连接 Android 模拟器(Windows)

    环境配置 Flutterhttps flutter cn docs get started install windows Android Studiohttps developer android google cn studio VS
  • 同步和异步的区别

    同步 同步的思想是 所有的操作都做完 才返回给用户 这样用户在线等待的时间太长 给用户一种卡死了的感觉 就是系统迁移中 点击了迁移 界面就不动了 但是程序还在执行 卡死了的感觉 这种情况下 用户不能关闭界面 如果关闭了 即迁移程序就中断了
  • Mac和Windows下 idea连接k8s集群详解

    设备版本 1 k8s server v1 21 2 2 k8s client v1 19 3 3 ktConnect 0 3 6 自测发现Mac不受版本影响 4 idea 2022 2 3 不影响 5 Mac 10 15 7 备注 查看方式
  • 使用Android Studio做一个简易进制转换计算器

    Android Studio简易进制转换计算器 1 问题描述 设计并实现一个数制转换器 能够对输入的任 进制类型的数值转换为指定的数制类型的数值 必须实现的数制类型有二进制 八进制 十进制和十六进制四种 2 基本要求 1 使用Spinner
  • Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple WARNING: Retrying (Retry(total=4, conne

    错误描述 在用anaconda prompt安装python第三方包时出现错误 Looking in indexes https pypi tuna tsinghua edu cn simple WARNING Retrying Retry
  • Java中的Minor GC 和MajorGC

    简述 java 内存分配与回收策率以及 Minor GC 和Major GC 1 对象优先在堆的 Eden 区分配 2 大对象直接进入老年代 3 长期存活的对象将直接进入老年代 当 Eden 区没有足够的空间进行分配时 虚拟机会执行一次 M
  • 2、 C++中的引用

    2 C 中的引用 C 中的引用 C 中的布尔类型 C 中的引用 C 中的布尔类型 C 在C语言的基本类型系统之上增加了bool C 中的b001可取的值只有true和 false 理论上bool只占用一个字节 如果多个b0ol变量定义在一起
  • IDEA创建scala项目的三种方法

    转自 https blog csdn net u013850277 article details 78526046 用了好几年的Eclipse 最近想着了解下Scala 听说Intelli JDEA这个工具很强大 因而开始着手试试 Int
  • Wpf资源字典-ResourceDictionary

    Wpf中的资源 Resources 和资源字典 ResourceDictionary 又有些不同 资源 作用于当前Xaml 若要用于其他Xaml的话又要重新定义 资源字典 给整个项目定义的资源 可用于整个项目中的各Xaml 资源字典 Res
  • Docker 内pip安装package报错: Failed to establish a new connection: [Errno -3] Temporary failure in name r...

    说来奇幻 对本菜来说 经常遇到堪称奇幻的问题 之前在docker里面各种安装都没问题 也不知道什么引起的 昨天晚上调试的时候卸载了一个包的版本 然后就安不上了 宿主机安装依然各种流畅 唯独docker容器不行 网上找了许多方法 最后在 et
  • 今天开始准备整理异常,只要是遇到的就贴上来

    一般报java lang NullPointerException的原因有以下几种 字符串变量未初始化 接口类型的对象没有用具体的类初始化 比如 List lt 会报错 List lt new ArrayList 则不会报错了 当一个对象的
  • 【公基】口算提速,java 自动生成:加、减、乘、除、混合运算题目

    效果图 先确定训练那种运算 以及训练多少题 具体运算 结果分析 代码 废话不多说 直接上代码 package 行测 import java text DecimalFormat import java text NumberFormat i