队友个人项目代码分析
作者:互联网
项目要求
功能实现
该项目使用的语言是Java,题目要求的功能全部实现,通过阅读其源代码,做出以下分析:
优点:
在生成题目的函数中,将运算符(+-*/),操作数(算式)和括号分开处理,令代码更简洁明了
if(type.equals("高中")){ String[] sin={"sin","cos","tan"}; operand_num=rand.nextInt(5)+1; question=new String[operand_num]; for(int i=0;i<operand_num;i++){ question[i]=String.valueOf(rand.nextInt(100)+1); } int special_num1=rand.nextInt(operand_num); //有根号或者平方的数字的个数 int special_num2=rand.nextInt(operand_num)+1;//有三角函数的数字的个数(必须有一个) boolean[] flag1=new boolean[operand_num]; //防止操作数加了平方又加根号 boolean[] flag2=new boolean[operand_num]; //防止操作数添加了两次三角函数 for(int i=0;i<special_num1;i++){ //如果操作数位置没有加根号/平方的话 int j=rand.nextInt(operand_num); if(!flag1[j]){ //50%的概率加平方,50%的概率加根号 if(rand.nextBoolean()){ question[j]=question[j]+"²"; } else question[j]="√"+question[j]; } flag1[j]=true; } for(int i=0;i<special_num2;i++){ int j=rand.nextInt(operand_num); if(!flag2[j]){ question[j]=sin[rand.nextInt(3)]+question[j]; } flag2[j]=true; } } //加括号 if(operand_num>=3&&rand.nextBoolean()){ int length=rand.nextInt(operand_num-2)+1; int a=rand.nextInt(operand_num-length); int b=a+length; question[a]="("+question[a]; question[b]=question[b]+")"; } for(int i=0;i<operand_num-1;i++){ question[i]+=signs[rand.nextInt(4)]; }
定义了user类,将用户的账号信息和登录信息封装起来,能有效地提高代码的编写的效率;
将整个项目的流程拆分成几个方法,独立编写,增大了后期的拓展性,减小了修正的难度;
代码间重要的地方都有注释,令人更易读懂代码;
缺点:
文件创建时使用了绝对路径,当计算机中不存在该路径时,会报错;
当检验是否会有题目重复时,程序会读入所有已经生成过的文件,会占用很大的空间;
用户的账号信息保存在程序中,不利于后期的拓展;
标签:rand,个人,int,代码,question,num,队友,operand 来源: https://www.cnblogs.com/T20151020/p/16690922.html