问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
public class RandomEx {
public static void main(String[] args) {
RandomEx randomEx = new RandomEx();
randomEx.test();
}
public void test(){
Random random = new Random();
List<Integer> s1 = new ArrayList<Integer>();
List<Integer> s2 = new ArrayList<Integer>();
List<String> label = new ArrayList<String>();
//调整为10以内的 结果就可以出来,如果超过10 结果就出不来 不知道什么原因 请大神赐教
while (s1.size()<10){
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);
}
}
//如果相加大于10 则重新生成随机数
if ("+".equals(d)){
while (a+b>10){
a=(int) (Math.random()*10+1);
b=(int) (Math.random()*10+1);
}
}
//判断是否添加重复
if (!s1.contains(a)){
s1.add(a);
s2.add(b);
label.add(d);
}
}
//打印结果
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;
System.out.print(a+flag+b+"="+c+"\t");
if ((i+1)%5==0){
System.out.println();
}
}
}
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果