Java练习题目
要求简单,生成50道四则运算题目,包含±*÷,注意除数不能为0
import java.util.Random;
/**
*
* @author bufei
* @datatime 2020年6月25日09:02:54
* @desc 自动生成50道 50 以内的 四则运算算数题,同时生成答案
*
*/
public class Calculate {
/**
* 思路
* 1 定义3个int数组 ,int []num1,[]num2,[]num3,分别存 第一运算数 ,第二个运算数,结果,
* 定义一个字符数组,char [] ch ;存50道题目的运算符,
* 2 随机生成一个长度50的运算符数组
* 3 根据运算符 ,随机组合运算数,并存入三个数组
* 4 输出的时候可以组合题目,答案存数组 int []result;单独输出
*/
public static void main(String[] args) {
// 运算符
char[] ch = new char[50];
//num first secend result Answer
int[] numF = new int[50];
int[] numS = new int[50];
int[] numR = new int[50];
int[] numA = new int[50];
Random random = new Random(1);
Random rnd2 = new Random(2);
Random rnd3 = new Random(3);
for (int i = 0; i < 50; i++) {
//用num生成运算类型
int num = random.nextInt(4);
//numF numS 分别为第一、二个运算数
numF[i] = rnd2.nextInt(51);
//在生成题目时 考虑除数不为0
numS[i] = rnd3.nextInt(51);
switch (num) {
case 0:
ch[i] = '+';
break;
case 1:
ch[i] = '-';
break;
case 2:
ch[i] = '*';
break;
case 3:
ch[i] = '÷';
break;
default:
break;
}
}
// 组合+— *
for (int i = 0; i < 50; i++) {
switch (ch[i]) {
case '+':
numR[i] = numF[i] + numS[i];
break;
case '÷':
while (numS[i] == 0) {
numS[i] = new Random().nextInt(51);
}
numR[i] = numF[i] / numS[i];
break;
case '*':
numR[i] = numF[i] * numS[i];
break;
case '-':
numR[i] = numF[i] - numS[i];
break;
default:
break;
}
}
//题目数组
String[] question = new String[50];
for (int i = 0; i < numR.length; i++) {
//随机抽取一个运算数用空格替代,存入答案numA数组中
int flag = random.nextInt(3);
switch (flag) {
case 0:
question[i] = "___ " + ch[i] + numS[i] + "\t= " + numR[i];
numA[i] = numF[i];
break;
case 1:
question[i] = numF[i] + " " + ch[i] + " ___" + "= " + numR[i];
numA[i] = numS[i];
break;
case 2:
question[i] = numF[i] + " " + ch[i] + numS[i] + "\t= " + "___";
numA[i] = numR[i];
break;
default:
break;
}
}
for (int i = 0; i < 50; i++) {
System.out.print(question[i]);
System.out.println("\tAnswer = " + numA[i]);
}
}
}
不足很多,仅为练习题目,什么时候想完善再改
- 很多除法题不能整除,出现答案为0 ,或者仅为整数的情况。
- 乘除有第一个数为0,后续答案为0,或答案不唯一的情况
- 也许还有其他更高效巧妙的实现方法,欢迎指正。