java四则运算思路_java四则运算
代碼存放coding地址:https://coding.net/u/Jerryii/p/ArithmeticTopic/git/blob/master/.gitignore
一、題目描述:
實(shí)踐能力的提高當(dāng)然就是得多動(dòng)手了,那么就從第一個(gè)個(gè)人項(xiàng)目開(kāi)始吧,用一周的時(shí)間完成一個(gè)基于控制臺(tái)的四則運(yùn)算程序,實(shí)現(xiàn)一個(gè)自動(dòng)生成小學(xué)四則運(yùn)算題目的命令行程序。
從《構(gòu)建之法》第一章的 “程序” 例子出發(fā),像阿超那樣,花二十分鐘寫(xiě)一個(gè)能自動(dòng)生成小學(xué)四則運(yùn)算題目的命令行 “軟件”,滿足以下需求:
1. 使用 -n 參數(shù)控制生成題目的個(gè)數(shù),例如
Myapp.exe -n 10-o Exercise.txt
將生成10個(gè)題目。
2. 使用 -r 參數(shù)控制題目中數(shù)值(自然數(shù)、真分?jǐn)?shù)和真分?jǐn)?shù)分母)的范圍,例如
Myapp.exe -r 10
將生成10以?xún)?nèi)(不包括10)的四則運(yùn)算題目。該參數(shù)可以設(shè)置為1或其他自然數(shù)。該參數(shù)必須給定,否則程序報(bào)錯(cuò)并給出幫助信息。
3. 生成的題目中如果存在形如e1÷ e2的子表達(dá)式,那么其結(jié)果應(yīng)是真分?jǐn)?shù)。
4. 每道題目中出現(xiàn)的運(yùn)算符個(gè)數(shù)不超過(guò)3個(gè)。
5. 程序一次運(yùn)行生成的題目不能重復(fù),即任何兩道題目不能通過(guò)有限次交換+和×左右的算術(shù)表達(dá)式變換為同一道題目。例如,23 + 45 = 和45 + 23 = 是重復(fù)的題目,6 × 8 = 和8 × 6 = 也是重復(fù)的題目。3+(2+1)和1+2+3這兩個(gè)題目是重復(fù)的,由于+是左結(jié)合的,1+2+3等價(jià)于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重復(fù)的兩道題,因?yàn)?+2+3等價(jià)于(1+2)+3,而3+2+1等價(jià)于(3+2)+1,它們之間不能通過(guò)有限次交換變成同一個(gè)題目。
生成的題目存入執(zhí)行程序的當(dāng)前目錄下的Exercises.txt文件,格式如下:
1. 四則運(yùn)算題目1
2. 四則運(yùn)算題目2
……
其中真分?jǐn)?shù)在輸入輸出時(shí)采用如下格式,真分?jǐn)?shù)五分之三表示為3/5,真分?jǐn)?shù)二又八分之三表示為2’3/8。
6. 在生成題目的同時(shí),計(jì)算出所有題目的答案,并存入執(zhí)行程序的當(dāng)前目錄下的Answers.txt文件,格式如下:
1. 答案1
2. 答案2
特別的,真分?jǐn)?shù)的運(yùn)算如下例所示:1/6 + 1/8 = 7/24。
7. 程序應(yīng)能支持一萬(wàn)道題目的生成。
8. 程序支持對(duì)給定的題目文件和答案文件,判定答案中的對(duì)錯(cuò)并進(jìn)行數(shù)量統(tǒng)計(jì),并會(huì)輸出所有題目中重復(fù)的題目,輸入?yún)?shù)如下:
Myapp.exe -e .txt -a .txt-o Grade.txt
統(tǒng)計(jì)結(jié)果輸出到文件Grade.txt,格式如下:
Correct: 5 (1, 3, 5, 7, 9)
Wrong: 5 (2, 4, 6, 8, 10)
Repeat:2
RepeatDetail:
(1)?? 2,45+32? Repeat 3,32+45
(2)?? 5,3+(2+1)? Repeat 7,1+2+3
解釋:
Correct: 5 ----5道題目正確,正確的題號(hào) 1,3,5,7,9
Wrong:5 -----5道題目錯(cuò)誤,錯(cuò)誤的題號(hào) 2,4,6,8,10
Repeat:2?? 2---組題目重復(fù)
(1) 第一組 題號(hào)2,題目 45+32? 與題號(hào)3的題目重復(fù),題號(hào)3為 32+45
(2)第二組? 題號(hào)5,題目 3+(2+1) 與題號(hào)7的題目重復(fù),題號(hào)7為 1+2+3
其中“:”后面的數(shù)字5表示對(duì)/錯(cuò)的題目的數(shù)量,括號(hào)內(nèi)的是對(duì)/錯(cuò)題目的編號(hào)。為簡(jiǎn)單起見(jiàn),假設(shè)輸入的題目都是按照順序編號(hào)的符合規(guī)范的題目。
二、代碼思路
1、創(chuàng)建隨機(jī)數(shù)字:createNumber
用random產(chǎn)生兩個(gè)隨機(jī)數(shù),一個(gè)做分子一個(gè)做分母,判斷這兩個(gè)數(shù)字相除的情況,產(chǎn)生真分?jǐn)?shù),假分?jǐn)?shù)或整數(shù)。
2、創(chuàng)建運(yùn)算表達(dá)式:createExp
隨機(jī)產(chǎn)生一次運(yùn)算符,調(diào)用兩次createNumber產(chǎn)生兩個(gè)數(shù)字,產(chǎn)生的運(yùn)算表達(dá)式有兩種形式,真分?jǐn)?shù)形式和假分?jǐn)?shù)形式,真分?jǐn)?shù)形式用來(lái)輸出到Exercise.txt中,假分?jǐn)?shù)形式用來(lái)計(jì)算答案。
3、將運(yùn)算表達(dá)式轉(zhuǎn)化成后綴表達(dá)式并計(jì)算答案:transform(轉(zhuǎn)化后綴)、compare(比較運(yùn)算符優(yōu)先級(jí))、calculate(計(jì)算答案)
計(jì)算的結(jié)果轉(zhuǎn)化為double類(lèi)型。
4、讀Answer.txt中的文件:readAndRead
將讀到的內(nèi)容轉(zhuǎn)化成double類(lèi)型,存在數(shù)組ans中。
5、比較Answer中填入的答案和calculate方法計(jì)算的答案
calculate方法產(chǎn)生的答案用double類(lèi)型的數(shù)組results存起來(lái),和數(shù)組ans比較,相等的話indexC(正確數(shù)目的計(jì)數(shù)器)+1,不等indexW(錯(cuò)誤數(shù)目的計(jì)數(shù)器)+1。
6、運(yùn)算表達(dá)式寫(xiě)入Exersies.txt,正確錯(cuò)誤數(shù)目結(jié)果寫(xiě)入Gread.txt。
三、運(yùn)行截圖
1、控制臺(tái)輸出
2、Exersies.txt文件中寫(xiě)入的內(nèi)容
3、Answer.txt文件中的內(nèi)容
4、Gread.txt文件中寫(xiě)入的內(nèi)容
四、不足之處
1、查重沒(méi)有寫(xiě)
2、Answer.txt文件中寫(xiě)的代碼不能寫(xiě)真分?jǐn)?shù)的形式,也不能寫(xiě)負(fù)數(shù),否則運(yùn)行過(guò)程中會(huì)出錯(cuò)。
五、個(gè)人軟件過(guò)程耗時(shí)估計(jì)與統(tǒng)計(jì)
PSP2.1
Personal Software Process Stages
Time Senior Student
Time
Planning
計(jì)劃
60
46
· Estimate
估計(jì)這個(gè)任務(wù)需要多少時(shí)間
1天
1天半
Development
開(kāi)發(fā)
480
840
· Analysis
需求分析 (包括學(xué)習(xí)新技術(shù))
30
98
· Design Spec
生成設(shè)計(jì)文檔
· Design Review
設(shè)計(jì)復(fù)審
· Coding Standard
代碼規(guī)范
· Design
具體設(shè)計(jì)
· Coding
具體編碼
· Code Review
代碼復(fù)審
· Test
測(cè)試(自我測(cè)試,修改代碼,提交修改)
30
90
Reporting
報(bào)告
60
54
·
測(cè)試報(bào)告
·
計(jì)算工作量
·
并提出過(guò)程改進(jìn)計(jì)劃
六、小結(jié)
這次四則運(yùn)算的作業(yè)看似簡(jiǎn)單,但是想要做好也很不容易,因?yàn)樵诋a(chǎn)生的表達(dá)式中存在真分?jǐn)?shù)假分?jǐn)?shù)的問(wèn)題,計(jì)算機(jī)本身是不認(rèn)識(shí)分?jǐn)?shù)的,就需要我們自己將分?jǐn)?shù)轉(zhuǎn)化成浮點(diǎn)數(shù)類(lèi)型的數(shù)字比較。我處理這個(gè)問(wèn)題的方法是用數(shù)組存儲(chǔ)兩種形式的數(shù)字和算術(shù)表達(dá)式,輸出時(shí)用數(shù)組中的真分?jǐn)?shù)的形式,計(jì)算時(shí)用數(shù)組中假分?jǐn)?shù)的形式,例如假分?jǐn)?shù)5/4計(jì)算時(shí)會(huì)直接看成5除4。比較的時(shí)候是轉(zhuǎn)化成double類(lèi)型,存入數(shù)組比較。
總結(jié)
以上是生活随笔為你收集整理的java四则运算思路_java四则运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三菱FX5U PLC远程调试监控设备方案
- 下一篇: app2sd使用教程