1. 程式人生 > >結對編程——四則運算(第一周)

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

inf 情況 代碼托管 string on() 測試 運算 Coding 總數

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

需求分析

題目要求

一個命令行程序實現:

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

    需求理解

  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

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