生成小学算术题——小程序

来源:互联网 发布:怎样注册淘宝账户 编辑:程序博客网 时间:2024/05/01 06:25

题目要求是, 对给定的三个数字,生成特定的小学算术题。

例如,当输入的是20 3 100的时候,生成100个20以内的,含有3个数参加运算的加减运算题。

下面的代码比较简单,也有详细的注释。代码还存在很多不足。最大的问题在于,虽然用了面向对象的思想,但做法却还是有点面向过程的感觉。也就是还没有完全顺应面向对象的思想,不能做到用面向对象的思维去思考问题。还需继续面向对象!偷笑

import java.util.Scanner;public class shizi {public static void main(String[] args) {int a[]=new int[3];//a[0]、a[1]、a[2]分别代表所有数字的范围、加数的个数、生成式子的个数Scanner s=new Scanner(System.in);for(int i=0;i<3;i++){String s1=s.next();Integer intm=new Integer(s1);a[i]=intm.intValue();}s.close();//以上是输入for(int i=0;i<a[2];i++){//Formula myFormula=new Formula(a[1],a[0]);int j=0;while(j<a[1])j+=1*myFormula.add(myFormula.numRand());//是否加入成功,没加入到式子中则j不变,否则j+1myFormula.printFormula();}}}class Formula{int addendNumber_cur;//当前加数的个数.int addendNumber;//最终需要的加数个数,生成符号数组和加数数组的时候使用.int addend_range;//加数的范围.int ans_cur;//当前和.int addends[];Formula(int addendNumber,int addend_range){this.addendNumber=addendNumber;this.addend_range=addend_range;this.ans_cur=0;this.addendNumber_cur=0;this.addends=new int[addendNumber];}int add(int add_num){int ans_temp=this.ans_cur+add_num;if(ans_temp<0||ans_temp>this.addend_range){//这个if不太好消除return 0;}else{this.addends[this.addendNumber_cur]=add_num;//将这个数字加入到加数数组中this.ans_cur=ans_temp;//更新 当前的和this.addendNumber_cur++;//当前已有的加数个数+1return 1;}}int numRand(){return (int) ((Math.random()-0.5)*2*this.addend_range);//随机生成一个绝对值小于addend_range的数}void printFormula(){System.out.print(this.addends[0]);for(int i=1;i<this.addendNumber;i++)System.out.printf("%+d",this.addends[i]);System.out.println("=");}}
若发现有什么错误或者不足,请指正,谢谢

0 0
原创粉丝点击