四则运算2(改进版)

 设计思想:

  定义两个整型的变量a,b;作为进行运算的两个数,在定义一个double类型的e,作为运算结果;参与运算的两个数都有了,接下来就是我们的运算符了,因为要随机生成加减乘除四则运算符,我们不妨在定义一个整型变量c,c是从1到4产生的随机数,然后再用switch语句,选择随机产生的c ,case 1 2 3 4分别对字符型的变量d进行赋值,这个过程产生运算符;整个运算的流程结束了,接下来就是判断运算的了,因为我们要求最后的结果要在100以内,所以,这里要进行一个if语句的判断,如果结果e在100之内,就要输出算式,当然,我们的用户对象是学生,也要考虑结果是不是大于0。    (还有就是对程序的优化了,既然我们的用户对象是二年级的小学生,他们肯定不会计算分数,只能计算整数,在随机产生出发算式的时候,很有可能会产生分数的结果,那么,怎么才能解决这个问题呢?是不是要在进行一次判断?对除法算式进行判断。。。。。这里就卡住了) 

   //这里需要注释一下,上面写的是 上次的四则运算,这次继续对上次的进行改进。除法确实是有点难,继续上次的思路,怎们判断能不能整除,我们可以反过来思考问题,将除数和被除数都定义为整型的,得到一个结果e,再让e乘以除数,看看能不能得到被除数。这就利用了计算机对整型数据除法的规则,比如73/72会得到1;那么1*72不等于73;我们就继续循环。直到相等我们再跳出循环。下面我放一下验证除法的代码。

package jisuanqi;
// 检验能不能整除
public class test {
public static void main(String[] args) {
      int a1;
      int b1;
      int e1=0;
      int f1=0;
   do  {
          a1=(int)(Math.random()*99+1);
          b1=(int)(Math.random()*99+1);
         String d1=" ";
              int c1=(int)(Math.random()*4+1);
              switch(c1) 
              {
              case 1:{d1="+";
              e1=a1+b1;break;}
              case 2:{d1="-";
              e1=a1-b1;break;}
              case 3:{d1="*";
              e1=a1*b1;break;}
              case 4:{d1="/";
              e1=a1/b1;break;}
         }
            if(e1<100&&0<e1&&(d1.equals("/"))&&(e1*b1==a1))  
                //如何判断除法的最后结果是整数类型?
                //佩服自己的聪明才智,用最后除法的结果在乘以第二个数,判断是否等于第一个数,这样
                //就ok了
            {
                System.out.println(a1);
          System.out.println(a1+d1+b1);
          System.out.println(e1);
          f1++;
            }
            else
                f1=f1;
     }while(f1<1);
    }
}

验证截图 :

总结: 

  上述代码只是验证除法的,f的值,确定了输入几个算式,这个就解决了前一篇随笔四则运算一中的问题。

posted @ 2017-12-06 19:37  南极没有北极熊  阅读(166)  评论(0编辑  收藏  举报