四则运算生成器做法思路
- 定义一个四则运算符的字符数组,使用随机数方法每次产生1到3的随机数作为运算符个数,运算符的个数确定后操作数随之确定
- 用随机数方法Math.rabdom()产生确定范围内的随机数存入数组
- 同样使用随机数去取运算符,存放到一个数组里面
- 将操作数和运算符转成字符串存放到字符串数组,再将字符串数组转化成字符串,使用io流写入到文件中
-
public static float opt(String s) throws Exception { if (s == null || "".equals(s.trim())) { return 0f; } int a1 = s.indexOf("+"); int a2 = s.indexOf("-"); int a3 = s.indexOf("*"); int a4 = s.indexOf("/"); int a5 = s.indexOf("("); if (a1 == -1 && a2 == -1 && a3 == -1 && a4 == -1) { if (s.trim() == null || "".equals(s.trim())) { throw new Exception("operate error"); } return Float.parseFloat(s.trim()); } if (a5 != -1) { int a6 = s.indexOf(")"); if (a6 == -1) { throw new Exception("括号不匹配"); } else { float f = opt(s.substring(a5 + 1, a6).trim()); s = s.replace(s.substring(a5, a6 + 1), String.valueOf(f)); return opt(s); } } if (a1 != -1) { return opt(s.substring(0, a1)) + opt(s.substring(a1 + 1, s.length())); } if (a2 != -1) { return opt(s.substring(0, a2)) - opt(s.substring(a2 + 1, s.length())); } if (a3 != -1) { return opt(s.substring(0, a3)) * opt(s.substring(a3 + 1, s.length())); } if (a4 != -1) { return opt(s.substring(0, a4)) / opt(s.substring(a4 + 1, s.length())); } return Integer.parseInt(s.trim()); }
使用以上的opt方法计算结果,该方法存在一些问题,比如计算结果没办法保留分数形式
- 目前只实现以上的功能