课堂测验(9.18)

发布时间 2023-09-18 22:04:30作者: 夏季彼岸德

出30道二年级四则运算题目

减法不能有负数,不能有重复题目,乘法结果小于四位数,除法是整除,能计时,能判断结果正确与否,能给出正确结果,正确率,错题数目

首先一个记录时间的类

package homework;

public class time extends Thread{
private int seconds;//秒
//计时方法
@Override
public void run() {
for (;;){
for(seconds=0;;seconds++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

//获取小时
//获取秒
public int getSeconds() {
return seconds;
}
}
接着一个信息类
package homework;

public class text918i {
private int a1;
private int a2;
private int a3;

public text918i() {
}

public text918i(int a1, int a2, int a3) {
this.a1 = a1;
this.a2 = a2;
this.a3 = a3;
}

public int getA1() {
return a1;
}

public void setA1(int a1) {
this.a1 = a1;
}

public int getA2() {
return a2;
}

public void setA2(int a2) {
this.a2 = a2;
}

public int getA3() {
return a3;
}

public void setA3(int a3) {
this.a3 = a3;
}
}
最重要的部分
package homework;

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

public class text918 {
public static void main(String[] args) {
ArrayList<text918i> list = new ArrayList<>();
text918i t = new text918i();
time th=new time();
Scanner sc = new Scanner(System.in);
int num2 = 0;//计正确数
int num3 = 0;//计错误数
int num4 = 1;
System.out.println("设定做题时间");
int timei=sc.nextInt();
th.start();
loop1:do {
loop2:do {
Random r = new Random();
int a1 = r.nextInt(3);//符号
int a2 = r.nextInt(99);//第一个数
int a3 = r.nextInt(99);//第二个数
switch (a1) {
case 0://加法
int result0 = a2 + a3;
System.out.println(a2 + "+" + a3 + "=");
int res0 = sc.nextInt();
boolean flag00 = judge4(result0, res0);
if (flag00 == true) {
num2++;
System.out.println("回答正确");
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
} else {
num3++;
System.out.println("回答错误");
System.out.println("正确答案为:" + result0);
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
}
case 1://减法
boolean flag1 = judge1(a2, a3);
if (flag1 == true) {
int result1 = a2 - a3;
System.out.println(a2 + "-" + a3 + "=");
int res1 = sc.nextInt();
boolean flag11 = judge4(result1, res1);
if (flag11 == true) {
num2++;
System.out.println("回答正确");
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
} else {
num3++;
System.out.println("回答错误");
System.out.println("正确答案为:" + result1);
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
}
}
case 2://乘法
boolean flag2 = judge2(a2, a3);
if (flag2 == true) {
int result2 = a2 * a3;
System.out.println(a2 + "*" + a3 + "=");
int res2 = sc.nextInt();
boolean flag22 = judge4(result2, res2);
if (flag22 == true) {
num2++;
System.out.println("回答正确");
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
} else {
num3++;
System.out.println("回答错误");
System.out.println("正确答案为:" + result2);
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
}
}
case 3://除法
boolean flag3 = judge3(a2, a3);
if (flag3 == true) {
int result3 = a2 * a3;
System.out.println(a2 + "*" + a3 + "=");
int res3 = sc.nextInt();
boolean flag33 = judge4(result3, res3);
if (flag33 == true) {
num2++;
System.out.println("回答正确");
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
} else {
num3++;
System.out.println("回答错误");
System.out.println("正确答案为:" + result3);
num4++;
judge6(list,a1,a2,a3);
t.setA1(a1);
t.setA2(a2);
t.setA3(a3);
break;
}

}
}
th.getSeconds();
if(th.getSeconds()>=timei){
System.out.println("时间到");
break loop1;
}
} while (th.getSeconds()<timei&&num4 <= 30);
} while (num4 <= 30);
judge5(num2, num3);
}

//判断减法结果正负
public static boolean judge1(int x, int y) {
int z = x - y;
if (z < 0) {
return false;
} else {
return true;
}
}

//判断乘法结果大小
public static boolean judge2(int x, int y) {
int z = x * y;
if (z > 999) {
return false;
} else {
return true;
}
}

//判断是否整除
public static boolean judge3(int x, int y) {
int z = x % y;
if (z != 0) {
return false;
} else {
return true;
}
}

//判断作答正确与否
public static boolean judge4(int x, int y) {
if (x == y) {
return true;
} else {
return false;
}
}

//计算正确率
public static void judge5(int x, int y) {
double rate;
rate = x / 30;
System.out.println("正确率为:" + rate);
System.out.println("错题数为:" + y);
}

//判断是否重复
public static boolean judge6(ArrayList<text918i> list,int a1,int a2,int a3){
for (int i = 0; i < list.size(); i++){
text918i tex = list.get(i);
int x=tex.getA1();
int y=tex.getA2();
int z=tex.getA3();
if(x==a1&&y==a2&&z==a3){
if(a2+a3>=99){
a3=a3+a1;
}
else{
a3=a2+a3;
}
}
}
return true;
}
}