前言
首先,结果必须要在0~100之间,因为对于这些算术题目的应用范围来说,不可能是已经学习了负数的人群,结果也在100以内可以适当删除,题目来源于《基于案例的软件构造教程》第二章模块化构造
要求:
程序输出50道100以内的加减法算式的习题(模块化,有一些鸡肋的感觉)
每次运行程序可得到一套50道题的习题和答案(结果也在0~100之间)
三个模块
- 打印提示语
- 输出题目(思路是写代码很重要的一点,请务必想好怎么去实现代码再来参考)
- 输出答案
代码
具体看代码注释,写的很清楚了
package com.rjgz.pro_one;
import java.util.Random;
public class Arithmetic {
public static void main(String[] args) {
//打印提示语
printHeader();
//generateEquations生成习题并返回习题的答案数组
int[] answerArr = generateEquations();
//输出答案
printAnswer(answerArr);
}
private static int[] generateEquations() {
//left_data为加法左边的数,right_data为右边的,flag是01标识用来判断+-
//subCount为题目个数 answer为每题答案 signal为加减法符号 answerArr为答案数组
int left_data, right_data, answer, flag, subCount = 0;
char signal;
int[] answerArr=new int[50];
Random random = new Random();
while (subCount != 50) {
flag = random.nextInt(2);//随机生成0或1
left_data = random.nextInt(101);//随机生成[0~100]之间的数
right_data = random.nextInt(101);//随机生成[0~100]之间的数
//判断是0或1生成加法或者减法,1为加法
if (flag == 1) {
signal = '+';
} else {
signal = '-';
}
//100以内的加减法,且结果也不能超过100,不能是负数,因此要加上判断,answer为计算结果
answer = calculate(left_data, right_data, flag);
if (answer < 100&&answer > 0) {
subCount++;
//将答案存入数组中并打印题目
answerArr[subCount-1] = answer;
System.out.println("第" + subCount + "题:\t" + left_data + signal + right_data + "=");
}
}
return answerArr;
}
private static void printHeader() {
System.out.println("---------------------------------------");
System.out.println("--- 程序输出50道100以内的加减法算式的习题 ");
System.out.println("--- 每次运行程序可得到一套50道题的习题和答案 ");
System.out.println("---------------------------------------");
}
/**
* 获取计算结果并返回
* @param left
* @param right
* @param flag
* @return
*/
public static int calculate(int left, int right, int flag) {
if (flag == 1) {
return left+right;
}
return left-right;
}
/**
* 打印出数组中存放的计算结果
* @param answerArr
*/
public static void printAnswer(int[] answerArr){
System.out.println("-------------------------------");
System.out.println("--- 下面是习题的参考答案");
System.out.println("-------------------------------");
//答案数组遍历输出
for (int i = 0; i < answerArr.length; i++) {
System.out.println((i+1)+":\t"+answerArr[i]);
}
}
}
运行效果
版权属于:不冷
本文链接:https://www.buleng.xyz/archives/209/
转载时须注明出处及本声明
v2.0 新增去除重复题目并给题目显示方式设置每行显示个数,需要代码的可以联系我