日常Java 2021/9/26 (二柱升级版)
package m;
import java.util.Scanner;
import java.util.Random;
public class di_er {
static int number=1000,i=0;
static int []a1=new int[number];
static int []a2=new int[number];
static double []sum=new double[number];//存储小数
static int []s=new int[number];//错题序号
static int []operator=new int[number]; //运算符
static int questionNumber=0;//题目个数
static int operatorNumber=0;//操作数个数
static int min=0;//最小值
static int max=0;//最大值
static int right=0;//正确题目
static int wrong=0;//错误题目
static Scanner in=new Scanner(System.in);
/*判断是否重复*/
public static boolean judge(int i) {
boolean y=false;
if(i!=0) {
int k=i;
for(int j=i;j>=0;j--) {
if(a1[k]==a1[j]&&a2[k]==a2[j])
y=true;
else
y=false;
}
}
return y;
}
/*生成一个随机数*/
public static void birth() {
a1[i]=min+(int)(Math.random()*((max-min)+1));
a2[i]=min+(int)(Math.random()*((max-min)+1));
}
/*出题*/
public static void setQuestion() {
System.out.println("请输入题目的个数:");
questionNumber=in.nextInt();
System.out.println("请输入操作数的个数:");
operatorNumber=in.nextInt();
System.out.println("请输入操作数取值范围的最小值:");
min=in.nextInt();
System.out.println("请输入操作数取值范围的最大值:");
max=in.nextInt();
}
/*回答问题*/
public static void replyQuestion() {
System.out.println("请同学现在进行答题!(除法请保留3位小数)");
for(int i=0;i<questionNumber;i++) {
sum[i]=in.nextDouble();
}
System.out.println("*************答题结束!*************");
}
/*判断结果是否正确*/
public static void judgeRightOrWrong() {
int r=0,w=0;
for(int i=0;i<questionNumber;i++) {
switch(operator[i]) {
case 0:{
if((a1[i]+a2[i]-sum[i])<1e-3)
r++;
else {
s[w]=i;
w++;
}
right=r;
wrong=w;
break;
}
case 1:{
if((a1[i]-a2[i]-sum[i])<1e-3)
r++;
else {
w++;
s[w]=i;
}
right=r;
wrong=w;
break;
}
case 2:{
if((a1[i]*a2[i]-sum[i])<1e-3)
r++;
else {
w++;
s[w]=i;
}
right=r;
wrong=w;
break;
}
case 3:{
if(((double)a1[i]/a2[i]-sum[i])<1e-3)
r++;
else {
w++;
s[w]=i;
}
right=r;
wrong=w;
break;
}
}
right=r;
wrong=w;
}
}
/*错题集*/
public static void wrongQuestion() {
System.out.println("错题集:");
String M="1";
for(int i=0;i<wrong;i++) {
int j=s[i];
if(operator[j]==0)
M="+";
if(operator[j]==1)
M="-";
if(operator[j]==2)
M="*";
if(operator[j]==3)
M="/";
System.out.println(a1[j]+M+a2[j]+"="+sum[j]);
}
}
/*主函数*/
public static void main(String []args) {
boolean flag=true;
int s1;
String m="s";
setQuestion();
for(i=0;i<questionNumber;i++) {
birth();
s1=(int)(Math.random()*4);
flag=judge(i);
if(flag) {
birth();
}
if(s1==0) {
m="+";
operator[i]=0;
}
if(s1==1) {
m="-";
operator[i]=1;
}
if(s1==2) {
if(a1[i]*a2[i]<100) {
m="*";
operator[i]=2;
}
else {
m="*";
birth();
}
}
if(s1==3) {
m="/";
operator[i]=3;
}
System.out.println(a1[i]+m+a2[i]+"=");
}
replyQuestion();
judgeRightOrWrong();
System.out.println("正确个数:"+right);
System.out.println("错误个数:"+wrong);
System.out.println("正确率:"+((double)right/questionNumber)*100+"%");
System.out.println("错误率:"+((double)wrong/questionNumber)*100+"%");
wrongQuestion();
System.out.println("选择yes/no对错题是否进行重做?");
String str=in.next();
String str1="yes";
String str2="no";
if(str.equals(str1)) {
while(wrong!=0) {
String M="1";
for(int i=0;i<wrong;i++) {
int j=s[i];
if(operator[j]==0)
M="+";
if(operator[j]==1)
M="-";
if(operator[j]==2)
M="*";
if(operator[j]==3)
M="/";
System.out.println(a1[j]+M+a2[j]+"=");
System.out.println("请重做:");
sum[j]=in.nextDouble();
}
judgeRightOrWrong();
}
if(wrong==0)
System.out.println("全部正确,答题结束");
}
if(str.equals(str2)) {
System.out.println("答题结束");
System.exit(0);
}
}
}

程序判断除法不是很准确
日常Java 2021/9/26 (二柱升级版)的更多相关文章
- 日常Java(测试 (二柱)修改版)2021/9/22
题目: 一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做. 二柱一下打印出好多份不同的题目,让孩子做了.老师看了作业之后,对二柱赞许有加.别的老师闻讯, 问二柱 ...
- 日常Java 2021/10/26
HashSet基于HashMap来实现的,是一个不允许有重复元素的集合.HashSet 允许有null 值. HashSet是无序的,即不会记录插入的顺序. HashSet不是线程安全的,如果多个线程 ...
- 日常Java 2021/11/18
用idea实现Javaweb登录页面 <%-- Created by IntelliJ IDEA. User: Tefuir Date: 2021/11/18 Time: 18:14 To ch ...
- 日常Java 2021/9/23
练习使用Math.random函数,以及JOptionPane.showMessageDialog(null,"字符串","Results",JOptionPa ...
- 日常Java 2021/11/21
Java文档注释 Java支持三种注释方式.前两种分别是Ⅱ和/产*,第三种被称作说明注释,它以产开始,以*I结束.说明注释允许你在程序中嵌入关于程序的信息.你可以使用javadoc工具软件来生成信息, ...
- 日常Java 2021/11/17
应用程序转换成Applet 将图形化的Java应用程序(是指,使用AWT的应用程序和使用java程序启动器启动的程序)转换成嵌入在web页面里的applet是很简单的.下面是将应用程序转换成.Appl ...
- 日常Java 2021/11/15
Applet类 每一个Applet都是java.applet Applet类的子类,基础的Applet类提供了供衍生类调用的方法,以此来得到浏览器上下文的信息和服务.这些方法做了如下事情: 得到App ...
- 日常Java 2021/11/13
Java Applet基础 Applet是一种Java程序.它一般运行在支持Java的Web浏览器内.因为它有完整的Java API支持,所以Applet是一个全功能的Java应用程序.如下所示是独立 ...
- 日常Java 2021/11/9
线程的优先级 每一个Java线程都有一个优先级,这样有助于操作系统确定线程的调度顺序.Java线程的优先级是一个整数,其取值范围是1(Thread.MIN_PRIORITY ) -10 (Thread ...
随机推荐
- redis 集群环境搭建
原理: 1,每个Redis群集的节点都需要打开两个TCP连接,由于这两个连接就需要两个端口,分别是用于为客户端提供服务的常规Redis TCP命令端口(例如6379)以及通过将10000和命令端口相加 ...
- jenkins 安装与使用
1.jenkins下载:https://jenkins.io/zh/download/ 2.将下载好的war包放到tomcat容器下的D:\apache-tomcat-9.0.10\webapps下( ...
- c++学习笔记(十一)
函数重载(overloading) 概念 重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数.类型或者顺序)必须不同, ...
- 大爽Python入门教程 0-4 安装Pycharm
大爽Python入门公开课教案 点击查看教程总目录 安装重量级IDE--Pycharm 一 下载 下面步骤1,2中网络卡顿的朋友, 请直接前往步骤3来下载. 使用搜索引擎搜索Pycharm, 打开搜索 ...
- web页面自动化总结。selenium
web自动化测试终篇:总结我理解的ui自动化,整理归纳: https://blog.csdn.net/CCGGAAG/article/details/89669592 web页面自动化知识点 1.we ...
- python实现对象测量
目录: 问题,轮廓找到了,如何去计算对象的弧长与面积(闭合),多边形拟合,几何矩的计算等 (一)对象的弧长与面积 (二)多边形拟合 (三)几何矩的计算 (四)获取图像的外接矩形boundingRect ...
- [atARC126F]Affine Sort
记$g(k)$为$c$恰为$k$的合法三元组数,显然$f(k)=\sum_{i=1}^{k}g(i)$ 结论:若$\lim_{k\rightarrow \infty}\frac{g(k)}{k^{2} ...
- 提升AI智能化水平,打造智慧新体验
内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲<提升AI智能化水平,打造智慧新体验>. 演讲嘉宾:沈波,华为消费者AI与智慧全场景ML Kit产品总监 今天 ...
- 手写HashMap,快手面试官直呼内行!
手写HashMap?这么狠,面试都卷到这种程度了? 第一次见到这个面试题,是在某个不方便透露姓名的Offer收割机大佬的文章: 这--我当时就麻了,我们都知道HashMap的数据结构是数组+链表+红黑 ...
- 【vue.js】vue项目使用Iconfont(阿里图标库)
vue项目使用Iconfont(阿里图标库) 2019-11-12 19:07:02 by冲冲 1.操作步骤 ① 登录阿里巴巴矢量图标库 https://www.iconfont.cn ,注册账号 ...