软件构造:完善口算题卡

请完善课上的口算题卡代码,实现重复题目的检测功能:

package cbsc.cha2;

import java.util.Random;

/* 分解成4个部分:

(1)增加一个程序头打印函数void printHeader(),比如简单说明本程序的作用和使用。

(2)函数void generateEquations(),产生加法或减法算式的符号串并存入一个数组。

(3)输出习题的函数void printExercise(),它接收generateEquations的输出,按

         照要求打印输出所有的算式。

(4)输出习题中每个算式的计算结果void printCalculations()。

 */

public class BinaryOperation_01 {

 static String [] e = new String[50];

 static short [] r = new short[50];

 public static void printHeader(){

 System.out.println("--------------------------------------");

 System.out.println("- 程序输出50道100以内的加法减法算式的习题 -");

 System.out.println("- 每次运行程序可得到一套50道题的习题及答案 -");

 System.out.println("--------------------------------------");

 }

 public static void generateEquations(){

 short m=0, n=0,v=0,ov = 0;   

 char o='+';

 Random random = new Random();

 for (int i=0;i<50; i++){

 ov = (short) random.nextInt(2); 

 m = (short)random.nextInt(101); // 随机产生运算数

 if (ov == 1){

 do {

 n = (short)random.nextInt(101);

 v = (short) (m + n);

 } while (100 < v || v < 0); 

 o = '+';

 } else {

 do {

 n = (short)random.nextInt(101);

 v = (short) (m - n);

 } while (100 < v || v < 0);

 o = '-';

 } 

 e[i]=""+m+o+n+"=";

 r[i]=v;

 

 if(!jiancha(e,i)) {

 i--;

 }

 

 }

 }

 public static boolean jiancha(String [] e,int i) {

 for(int j=0;j<i;j++) {

 if(e[i].equals(e[j])) {

 return false;

 }

 }

 return true;

 }

 public static void printExercise(){

 for (int i=0;i<e.length; i++){

 System.out.println(""+(i+1)+":\t"+e[i]);

 }

 }

 public static void printCalculations(){

 for (int i=0;i<r.length; i++){

 System.out.println(""+(i+1)+":\t"+r[i]);

 }

 }

 public static void main(String[] args) {

 printHeader();

 generateEquations();

 printExercise();

 System.out.println();

 System.out.println("---------------------------");

 System.out.println("- 下面是习题的参考答案    ");

 printCalculations(); 

 }

}

 

 

posted @ 2021-09-15 22:55  马梦佳  阅读(305)  评论(0编辑  收藏  举报