結對編程項目-四則運算

寫在前面

  • 個人結對夥伴王旌含
  • 關於四則運算的結對編程項目我和結對夥伴在不久前就有所涉及,但如今看來簡直是菜雞互啄,隨着學習的深刻和知識的不斷補充,編程項目也會越作越好。
  • 在編程中個人角色更傾向於領航員的角色,但在某些代碼編寫中我也化身爲副駕駛,協做,檢查,護航。html

    需求分析

  • 我想要幹什麼java

  • 自動生成小學四則運算題目(加、減、乘、除)
  • 支持整數,支持多運算符,支持真分數
  • 統計正確率
  • 我有哪些知識
  • 瞭解了中綴和後綴表達式
  • 瞭解棧的使用
  • 編寫過度數的四則運算程序
  • 我還需補充什麼
  • 熟悉調度場算法
  • 支持真分數

設計思路

  • 設計三個難度,對應運算符的多少以及是否加入括號
  • 設計兩種類,一種用來生成題目,一種用來計算題目
  • 計算:現將中綴表達式轉換爲後綴,在進行計算

階段成果

  • 調度場算法
    在鄒老師的調度場算法中提到若是在上面的過程當中不執行計算,直接將數字和出棧的符號依次輸出,咱們就會獲得後綴表達式git

  • 經過閱讀了解到要想將中綴改成後綴有兩個關鍵問題github

    • 如何去除括號
    • 如何處理運算符的優先級
  • 個人解決思路
//解決去除括號問題
    //若是讀入的操做符爲非")"且優先級比棧頂元素的優先級高或同樣,則將操做符壓入棧
    if (Number(Opera.peek()) < Number(token) && !token.equals(")")) {...}
    //若是讀入的操做符是")",則彈出從棧頂開始第一個"("及其以前的全部操做符
    else if (token.equals(")")) {
                        while (!Opera.peek().equals("(")) {
                            String operator = Opera.pop();
                            Methoder.append(operator);
                            stack.push(operator);
                        }
                        Opera.pop();
                    }
    //解決運算符優先級的問題
    private static int Number(String token){
        switch (token) {
            case "+":return 1;
            case "-":return 1;
            case "*":return 2;
            case "/":return 2;
            case "(":return 3;
            case ")":return 3;
            default :return 0;
        }
    }
  • 編寫好將題目寫入文件的基礎類(王旌含)
  • 編寫好產生初級題目的類(王旌含)
  • 編寫好單一運算符的分數計算基礎類(王旌含)算法

  • 以上就是一些階段成果,還有正在解決的問題編程

    • 產生多運算符題目時如何將括號插入有效位置
    • 未能解決分數的多運算符計算

成果展現

碼雲項目app

相關文章
相關標籤/搜索