用Java隨機生成四則運算


代碼鏈接:https://github.com/devilwjy/Code.Demo

需求分析:

1.程序可接收一個輸入參數n,然后隨機產生n道加減乘除練習題,每個數字在 0 和 100 之間,運算符在3個到5個之間。

2.每個練習題至少要包含2種運算符。

3.練習題在運算過程中不得出現負數與非整數,比如不能出 3/5+2=2.6,2-5+10=7等算式。

4.練習題生成好后,將學號與生成的n道練習題及其對應的正確答案輸出到文件“result.txt”中,不要輸出額外信息,文件目錄與程序目錄一致。

當程序接收的參數為4時,以下為輸出文件示例:

 

 

功能設計:

1.從鍵盤輸入一個數值,並生成相應數量的四則運算練習題。

2.數值的范圍為1到100,運算符的范圍是+,-,*,/。

3.數值的個數為3個,運算符的個數為2個。

4.運算過程中不得出現負數與非整數。

5.將學號、生成的四則運算練習題並及計算答案輸出到名為“Result.txt”的文檔中。

設計實現:

     

 

 

 

測試運行:

   

核心代碼:

以第一個運算符為“/”為例

 1 //第一個運算符為“/”
 2                 else{
 3                     if(data1%data2==0 && data2!=0)//判斷data1能否被data2整除,且除數data2不能為0
 4                     {
 5                         if(operator[num2]=="+")//乘除的優先級高於加減,所以可以順着往下計算
 6                         {
 7                             result=data1/data2+data3;
 8                             System.out.println(str+"="+result);
 9                             
10                         }
11                         else if(operator[num2]=="-")
12                         {
13                             if(data1/data2>=data3)//判斷data1/data2的商是否大於data3
14                             {
15                                 result=data1/data2-data3;
16                                 System.out.println(str+"="+result);
17                                  
18                             }
19                             else{
20                                 number++;//不符合條件就將表達式的個數加1,進行下一個表達式的計算
21                             }
22                         }
23                         else if(operator[num2]=="*")
24                         {
25                             result=data1/data2*data3;
26                             System.out.println(str+"="+result);
27                             
28                         }
29                         else{
30                             int result1=data1/data2;
31                             if(result1%data3==0 && data3!=0)//判斷data1/data2的商能否整除data3,且data3不能為0
32                             {
33                                 result=data1/data2/data3;
34                                 System.out.println(str+"="+result);
35                                 
36                             }
37                             else{
38                                 number++;
39                             }
40                         }
41                     }
42                     else{
43                         number++;
44                     }
45                 }

總結:

本次實驗我的實現過程很簡單,而且有很大的局限性,只能生成含有三個數、兩個運算符的四則運算練習題。一開始我的想法是將隨機生成的四則運算放在一個字符串里,根據逆波蘭式運算,將中綴表達式轉換成后綴表達式,然后存儲在棧中,但是最后沒能成功,只好用一種極為簡單的方式實現這個實驗。說來有些慚愧,有點投機取巧之嫌,不過我的編程能力很差,縱然仔細研究了網上博客中的代碼,還是寫不出想要實現的方法。雖然很遺憾,但我也只能做到這兒了,不能說問心無愧,只能表明以前用的功太少了,以后回盡力改正,養成良好的習慣。

PSP

任務內容

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

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

Planning

計划

10

12 

Estimite

估計任務所需時間,並規划大致工作步驟

10 

15 

Development

開發

100 

120 

Analysis

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

Design Spec 

生成設計文檔 

6

Design Review 

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

6

Coding Standard 

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

Design 

具體設計 

12 

14 

Coding 

具體編碼 

40 

46 

Code Review 

代碼復審 

12 

15 

Test 

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

15 

12 

Reporting 

報告 

12 

10 

Test Report 

測試報告 

Size Measurement

計算工作量

3

Postmortem & Process Improvement Plan 

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

 


免責聲明!

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



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