四则运算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的值,确定了输入几个算式,这个就解决了前一篇随笔四则运算一中的问题。