結對編程——四則運算(第一週)

結對編程——四則運算(第一週)

需求分析

題目要求

一個命令行程序實現:java

  • 自動生成小學四則運算題目(加、減、乘、除)
  • 支持整數
  • 支持多運算符(好比生成包含100個運算符的題目)
  • 支持真分數
  • 統計正確率git

    需求理解

  1. 輸入:須要計算的式子數、計算結果

    輸出:判斷後的答案(true/false)
  2. 知足真分數的運算如:1/3 + 1/4 = 7/12
  3. 處理的運算符爲 +, −, ×, ÷
  4. 能處理用戶的輸入,並判斷對錯,統計正確率。

設計思路

  • 自動生成四則運算,須要用到隨機數,用隨機數隨機生成數字,以及隨機生成0,1,2,3分別表明加減乘除符號以switch語句進行分類
  • 特殊狀況主要有除數不能爲0,假如除數爲0,則再產生一個隨機數,利用while循環;
  • 用count統計作對的條數,與總數相除做爲正確率

實現過程當中的關鍵代碼解釋

import java.util.Scanner;
public class question {
    public static void main(String[] args)
    {
        int k;
        int total,answer=0;
        int answer2;
        int count=0;
        System.out.println("請輸入你須要練習的題目數:");
        Scanner input=new Scanner(System.in 

);
        total=input.nextInt();
        question question=new question();
        for(int n=0;n<total;n++)
        {
            int i=(int)(Math.random()*100);
            int j=(int)(Math.random()*100);
            switch((int)(Math.random()*4))
            {
                case 0:
                    System.out.println(i+"+"+j+"=");
                    answer=i+j;
                    break;
                case 1:
                    if(i<j)
                    {
                        int temp=i;
                        i=j;
                        j=temp;
                    }
                    System.out.println(i+"-"+j+"=");
                    answer=i-j;
                    break;
                case 2:
                    System.out.println(i+"*"+j+"=");
                    answer=i*j;
                    break;
                case 3:
                    while(j==0)
                        j= (int)(Math.random()*100);
                    System.out.println(i+"/"+j+"=");
                    answer=i/j;
                    break;
            }
            Scanner input2=new Scanner(System.in 

);
            answer2=input2.nextInt();
            if(answer2==answer){
                System.out.println("正確!");
                count++;
            }
            else{
                System.out.println("錯誤!");
            }
        }
        float cent=(float)count/(float)total;
        System.out.println("正確率爲"+cent);
    }
}

運行過程截圖

代碼託管地址

碼雲地址編程

遇到的困難及解決方法

  • 困難1:如何高效的將一個輸入的值轉化爲可用數字?
  • 解決方法1:對於爲0的除數,利用while循環控制,進行排0輸出。
  • 困難2:選用何種方法對運算符進行隨機處理?
  • 解決方法2:隨機生成0,1,2,3,以數字分類代替運算符分類。

PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
· Test · 測試(自我測試,修改代碼,提交修改) 20min 25min
Planning 計劃 15min 10min
· Estimate · 估計這個任務須要多少時間 240min 260min
Development 開發 40min 35min
· Analysis · 需求分析 (包括學習新技術) 15min 35min
· Coding Standard · 代碼規範 (爲目前的開發制定合適的規範) 10min 15min
· Coding · 具體編碼 2h 100min
· Code Review · 代碼複審 30min 40min
相關文章
相關標籤/搜索