1. 程式人生 > >四則運算生成器做法思路

四則運算生成器做法思路

bstr abd val ace 功能 四則運算 != per sub

  1. 定義一個四則運算符的字符數組,使用隨機數方法每次產生1到3的隨機數作為運算符個數,運算符的個數確定後操作數隨之確定
  2. 用隨機數方法Math.rabdom()產生確定範圍內的隨機數存入數組
  3. 同樣使用隨機數去取運算符,存放到一個數組裏面
  4. 將操作數和運算符轉成字符串存放到字符串數組,再將字符串數組轉化成字符串,使用io流寫入到文件中
  5. 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方法計算結果,該方法存在一些問題,比如計算結果沒辦法保留分數形式

  6. 目前只實現以上的功能

四則運算生成器做法思路