10以内的加减法

  1. 加数 被加数  减数  被减数 均在10以内
  2. 生成的数据组合不能够重复
  3. 减数不能够为0
  4. 两数相减时结果不能够为负数
  5. 两数相加时结果不能够超过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();
            }
        }
    }
}

运行结果如下: 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值