分析:实现随机生成算式,支持括号和四则运算。
思路:先生成随机字符数组,然后生成随机数组,两者拼接。支持指定范围生成,和指定算式的长度。
代码
package com.instance;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Create_title
public String create_title( int range, int num2) //num:提目数 range:范围 num2:题目组成数量
Random random = new Random(range);
String char_arrays = null;
int num3 = (int) (Math.random() * num2);//分数的个数
int num4 = num2 - num3;//正数个数
int charNum = num2 - 1;//符号个数
int bracketL = 0;//(位置
int int_arrays = new intnum4 + num3 * 2;
boolean flag = isBracket();
if(flag)
char_arrays = returnChar(num3,charNum+2,flag);
}else
char_arrays = returnChar(num3,charNum,false);
}
for(int w=0;w<num2;wint_arraysw = random.nextInt(range);
}
String title = “”;
if(char_arrays0.equals("("))
for(int i = 0;i<num2;ititle +=char_arraysi+((int)(Math.random()*range)+"");
}
if(char_arraysnum2.equals(")"))
title += “)”;
}
}else
for (int i = 0; i <= num2; ititle += ((int) (Math.random() * range) + “”) + char_arraysi;
}
}
if(title.charAt(title.length()-1)’+'title.charAt(title.length()-1)’/'title = title.substring(0,title.length()-1);
}
return title;
}
boolean isBracket()
return true;
}
String returnChar(int mark,int charNum,boolean flag)
Random random = new Random();
String char_array = new StringcharNum;
if(flag)
int bracketL = random.nextInt(charNum-2);//(位置,最后一位和倒数第二位不能是(
int j = charNum - bracketL - 2;
int bracketR = bracketL+random.nextInt(j) + 2;//)位置这个随机数可以生成0
if(bracketL!=0)
char_arraybracketL = “+(”;
}else
char_arraybracketL = “(”;
}
if(bracketRcharNum-1)
char_arraybracketR = “)”;
}else
char_arraybracketR = “)-”;
}
}
int mark1 = 0;
while(true)
if(mark1mark)
break;
}
int i = (int)(Math.random()*charNum);
if(char_arrayi==null)
char_arrayi="/";
mark1}
}
int num = 0;
while(true)
if(num == charNum)break;
if(char_arraynum == null)
int i= (int)(Math.random()2);
switch (i)
case 0:char_arraynum="";
break;
case 1:char_arraynum="+";
break;
case 2:char_arraynum="-";
break;
}
}
num
}
return char_array;
}
}
调用
[结果展示