- 加数 被加数 减数 被减数 均在10以内
- 生成的数据组合不能够重复
- 减数不能够为0
- 两数相减时结果不能够为负数
- 两数相加时结果不能够超过10
public class Test10 {
public static void main(String[] args) {
Test10 test10 = new Test10();
test10.generate();
}
public void generate(){
System.out.println();
Random random = new Random();
List<Integer> s1 = new ArrayList<>(); //用来保存被加数或者被减数
List<Integer> s2 = new ArrayList<>(); //用来保存加数或者减数
List<String> label = new ArrayList<>(); //用来存储加减号
List<String> all = new ArrayList<>(); //保存三者的组合 避免重复
while (all.size()<50){ //控制生成个数
int a = (int) (Math.random()*10+1);
int b = (int) (Math.random()*10+1);
int c =random.nextInt(2);
String d=(c==1)?"+":"-";
//如果相减小于0 则重新生成随机数
if ("-".equals(d)){
if(a<=b){
b=random.nextInt(a);
//使减数不能够=0
while (b==0&&a!=1){
b=random.nextInt(a);
}
}
}
//如果相加大于10 则重新生成随机数
if ("+".equals(d)){
while (a+b>10){
a=(int) (Math.random()*10+1);
b=(int) (Math.random()*10+1);
}
}
//判断是否添加重复
String temp = a+d+b;
if(!"1-0".equals(temp)){ //过滤掉 “1-0”
if (!all.contains(temp)){
s1.add(a);
s2.add(b);
label.add(d);
all.add(temp);
}
}
}
//打印结果
show(s1,s2,label);
}
public void show(List<Integer> s1,List<Integer> s2,List<String> label){
for (int i =0;i<s1.size();i++){
int a=s1.get(i);
int b=s2.get(i);
String flag = label.get(i);
int c=("+".equals(flag))?a+b:a-b; //将结果保存在 变量c中
System.out.print(a+flag+b+"="+c+"\t");
if ((i+1)%5==0){
System.out.println();
}
}
}
}
运行结果如下: