我正在爲學校做一個Java分數計算器,我遇到的最大問題之一是解析。當我僅使用數字時,我可以使用它,但由於它是分數計算器,因此我們包含下劃線(用於混合數字)和反斜線用於分數。在使用除數字以外的字符時,如何能夠使用解析方法? 混合數字示例:4_7/8Java分數計算器:解析
回答
嘗試定義像這樣的解析方法簽名:BigDecimal parse(String)
。現在,你可以讓它返回null。接下來,爲需要支持的各種場景編寫單元測試。從簡單開始。雖然確實需要能夠解析「-4_7/8」,但首先要確保可以解析「7」,「8」,「-4」,「7/8」,最後是「-4_7/8" 。一定要考慮邊緣情況。你會用「2/-3」做什麼?你會解析還是認爲無效的輸入?一個例子測試可能是這樣的:
@Test
public final void verifyParseOne() {
assertEquals(new BigDecimal(1), parse("10/10"));
}
然後,反覆地「修理」你parse
功能,直到它通過所有測試。提示:您應該嘗試將複雜場景分解爲更簡單的場景,並且您可以通過讓函數使用與提供的參數不同的參數來調用自己,並對結果執行一些操作來完成此操作。例如。假設你的函數已經知道如何正確解析「7」和「8」,你可以用它爲分子和分母創建單獨的BigDecimal
對象。你怎麼能把這兩個物體變成一個?
通過調用任何BigDecimal
構造函數採取char[]
或String
作爲參數做不作弊。
注意,您不需要使用BigDecimal
,您可以創建一個類似的域對象來表示數字。但是,這超出了這個問題的範圍。
解析時,您主要關心的是:如何定義不同的元素 - 或者使用什麼字符來分割字符串。在你的情況下,下劃線字符將整數與小數部分分開,反斜槓將分子與分母分開。
有了這個,你可以將字符串分解成有意義的部分。
要解析字符串,您可以使用@ 3kings提到的String.split()
方法,這是一種方法。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29
String.split()
需要一個正則表達式作爲分隔符分割上。
比方說,你收到的1_2/3
輸入,並將其存儲在一個名爲inputParts
變量,你可以在_
字符分割,並用2個元素,1
和2/3
返回一個數組:
String[] inputParts = myInput.split("_");
然後你可能分裂的小數部分,並用2個元素,2
和3
返回另一個數組:
String[] fractionParts = inputParts[1].split("/");
你會ñ使用一些邏輯來處理您可能會收到的不同輸入。有時你可能只會得到一個分數,有時候是一個整數加上一個分數。
- 1. c#計算解析器
- 2. Java圖像分析 - 計算垂直線
- 3. 計算分數[Java程序]
- 4. Java XML解析器 - 如何收集或計算某個標記
- 5. 解析計算令牌
- 6. 計算DNS解析延遲
- 7. Java類設計和SAX解析器
- 8. Java支付分期付款計算器
- 9. java中的數學計算分數
- 10. 解析器和詞法分析器的設計指南?
- 11. Java loanTable計算器
- 12. java rpn計算器
- 13. Java MPG計算器
- 14. CommandLine Java計算器
- 15. RTF Java解析器
- 16. java dyn解析器
- 17. Java CSON解析器?
- 18. Java MIDI解析器?
- 19. robots.txt解析器java
- 20. 計算能力集算法分析
- 21. 計算分數
- 22. 解析分數
- 23. 算法設計和分析分離
- 24. Java解析Oracle解釋計劃
- 25. Java分支連接算法分析
- 26. Jodatime LenientChronology解析器雙重計數
- 27. Java數組解析
- 28. 我的Java分數計算器拒絕與我合作
- 29. XSD分析器算法
- 30. 通用解析器設計
做'字符串。split'方法調用它們,你應該能夠從那裏去 – 3kings
如果你舉一些例子,它很容易理解。 –
你能舉一個混合數字使用下劃線的例子嗎? –