原题
- (论述题)
生成50道100以内加法/减法算式的习题,并输出。
(1)每个算式还需要答案;
(2)加法算式的和不能超过100;
(3)减法算式的差不能小于0;
(4)每行整齐地多显示几个算式,不必频繁地下拉屏幕看算式。提交编写的代码和运行结果截图。
代码
为了使得代码提高可读性,使用了枚举,有关java中怎样随机访问enum可参考以下链接:
https://bbs.csdn.net/topics/320121564
package chapter02.commit;
/**
* Created by IntelliJ IDEA.
* Author: hmxn
* Date And Time: 2022/3/13 20:21
* describe: 表示计算符号的枚举类
**/
public enum OP {
ADD, SUB
}
package chapter02.commit;
/**
* Created by IntelliJ IDEA.
* Author: hmxn
* Date And Time: 2022/3/13 19:53
* describe: 算式 Bean 类
**/
public class Equation {
private int lNum; // 左边的数字
private int rNum; // 右边的数字
private OP op; // 运算符
private int ans; // 答案
/**
* 传入两个数字和运算符得到答案 ans
* @param lNum
* @param rNum
* @param op
*/
public Equation(int lNum, int rNum, OP op) {
this.lNum = lNum;
this.rNum = rNum;
this.op = op;
if (OP.ADD==op) {
this.ans = lNum + rNum;
} else if (OP.SUB==op) {
this.ans = lNum - rNum;
}
}
/**
* 格式化输出
* @return 格式规整的带有答案的计算式
*/
@Override
public String toString() {
return String.format("%3d %s %-3d = %3d", lNum, OP.ADD==op?"+":"-", rNum, ans);
}
}
package chapter02.commit;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Created by IntelliJ IDEA.
* Author: hmxn
* Date And Time: 2022/3/13 19:49
* describe: 主函数在此处,输出题目要求结果
**/
public class GenerateEquation {
public static void main(String[] args) {
int lNum;
int rNum;
OP[] ops = OP.values(); // 获得计算符号枚举数组
OP op;
Random random = new Random();
List<Equation> equations = new ArrayList<>();
// 得到50个符合题目要求的计算式
for (int i = 0; i < 50; i++) {
do {
lNum = random.nextInt(100) + 1; // 获得随机数[0,100]
rNum = random.nextInt(100) + 1; // 获得随机数[0,100]
op = ops[random.nextInt(ops.length)]; // 获得计算符号枚举数组中的随机值
} while ((lNum + rNum > 100) || (lNum - rNum < 0)); // 和>100或差<0会再次循环
equations.add(new Equation(lNum, rNum, op)); // 将符合条件的计算式添加到集合
}
// 按一定格式输出50个计算式
int cnt = 0;
for (Equation equation : equations) {
if (cnt % 5 == 0) {
System.out.println("");
} else {
System.out.print(equation+" ");
}
cnt++;
}
}
}