java四則運算隨機產生式


  • 程序可接收一個輸入參數n,然后隨機產生n道加減乘除練習題,每個數字在 0 和 100 之間,運算符在3個到5個之間。
  • 為了讓小學生得到充分鍛煉,每個練習題至少要包含2種運算符。同時,由於小學生沒有分數與負數的概念,你所出的練習題在運算過程中不得出現負數與非整數,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 練習題生成好后,將你的學號與生成的n道練習題及其對應的正確答案輸出到文件“result.txt中,不要輸出額外信息,文件目錄與程序目錄一致。
  • 當程序接收的參數為4時,以下為輸出文件示例。

  

一、需求分析

  1. 程序接受一個輸入參數n
  2. 隨機產生n道四則運算題
  3. 運算數要求為:0和100之間
  4. 運算符要求為:3到5個之間
  5. 每個四則運算式中不能出現負數與小數
  6. 將最終產生的結果存儲到txt文件中    

二、功能設計

  1. 程序接受一個隨機數number(3=<number<=5),隨機產生number運算數與運算符。
  2. 程序由接受的n確定產生的運算式數量
  3. 程序將接受的運算數與運算符隨機組合產生運算式
  4. 輸出結果並將其存儲到result.txt文件中

三、設計實現

  1. 編寫程序,接受一個數N,確定產生運算式的數量
  2. 產生隨機數number(3到5之間),產生運算數與運算符
  3. 隨機組合運算式與運算符,產生運算式
  4. 判斷運算式是否合法,若不合法,將其進行修改
  5. 打印輸出結果至result.txt文件

四、測試運行

窗口運行結果:

測試結果存儲至result.txt文件中:

 

 

 

五、核心代碼

 1        //存儲運算符
 2             for(int j=0;j<arr_str.length;j++) {
 3                 if(arr_str[j]=='+'||arr_str[j]=='-'||arr_str[j]=='*'||arr_str[j]=='/') {    
 4                     arrString=String.valueOf(arr_str[j]);
 5                     arr_str[j]=',';
 6                     arrslist1.add(arrString);
 7                 }
 8             }
 9             //存儲運算數
10             String s = new String(arr_str);
11             String[] ss = s.split(",");
12             for(int k=0;k<ss.length;k++) {
13                 arrslist2.add(ss[k]);
14             }
15             //生成運算式
16             String[] arrs1 = arrslist1.toArray(new String[arrslist1.size()]);//運算符
17             String[] arrs2 = arrslist2.toArray(new String[arrslist2.size()]);//運算數
18             
19             for(int m=0;m<arrs1.length;m++){
20                 arrslist.add(arrs2[m]);//運算數
21                 arrslist.add(arrs1[m]);//運算符
22             }
23             arrslist.add(arrs2[arrs2.length-1]);
24             String[] arrs = arrslist.toArray(new String[arrslist2.size()]);//運算式

//存儲運算式
    //封裝目的地
    public static void filewriter(ArrayList<String> arithList) throws IOException {
        //封裝存儲位置
        BufferedWriter BufferedWriterbw = new BufferedWriter(new FileWriter("result.txt"));
          BufferedWriterbw.write("201571030139");
          BufferedWriterbw.newLine();
          for(String s : arithList){
                //寫數據
              try {
                BufferedWriterbw.write(s+"="+js.eval(s));
            } catch (ScriptException e) {
                e.printStackTrace();
            }
              BufferedWriterbw.newLine();
              BufferedWriterbw.flush();
          }
    }
    

 

    //判斷是否產生負數與小數
    public static void  check_arith(String arr[]){
        for(int i=0;i<arr.length;i++){
            //判斷是否產生負數    
            if(arr[i].contains("-")){
                if(Integer.valueOf(arr[i-1])<Integer.valueOf(arr[i+1])){
                    arr[i]="+";
                }
            }
            //判斷是否產生小數
            if(arr[i].contains("/")){
                int a = Integer.valueOf(arr[i-1]);
                int b = Integer.valueOf(arr[i+1]);
                int x = a%b;
                if(x!=0){
                    arr[i]="+";
                }
            }
        }
    }

 

六、總結

在本次的四則運算程序的設計與編寫當中,我嚴格按照項目設計的一般步驟,有次序的進行程序的設計與編寫,比起以前的拿到題目就編寫程序的方式,節省了許多時間。再就是說一下本次的程序的難點:在產生運算式后,如何去判斷再運算中是否產生了負數與小數,在出現之后如何將其轉變的合理。

七、展示PSP

PSP2.1

任務內容

計划完成需要的時間(min)

實際完成需要的時間(min)

Planning

計划

20

30

·       Estimate

·  估計這個任務需要多少時間,並規划大致工作步驟

20

30

Development

開發

131

255

··       Analysis

  需求分析 (包括學習新技術)

10

10

·       Design Spec

·  生成設計文檔

5

10

·       Design Review

·  設計復審 (和同事審核設計文檔)

3

6

·       Coding Standard

  代碼規范 (為目前的開發制定合適的規范)

3

4

·       Design

  具體設計

10

15

·       Coding

  具體編碼

80

200

·       Code Review

·  代碼復審

10

10

·       Test

·  測試(自我測試,修改代碼,提交修改)

10

10

Reporting

報告

32

52

··       Test Report

·  測試報告

20

40

·       Size Measurement

  計算工作量

2

2

·       Postmortem & Process Improvement Plan

·  事后總結 ,並提出過程改進計划

10

10

 

  • Github地址:https://github.com/gzyt/Arithmetic

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM