2015-11-05 157 views
0

我正在爲學校做一個Java分數計算器,我遇到的最大問題之一是解析。當我僅使用數字時,我可以使用它,但由於它是分數計算器,因此我們包含下劃線(用於混合數字)和反斜線用於分數。在使用除數字以外的字符時,如何能夠使用解析方法? 混合數字示例:4_7/8Java分數計算器:解析

+1

做'字符串。split'方法調用它們,你應該能夠從那裏去 – 3kings

+1

如果你舉一些例子,它很容易理解。 –

+0

你能舉一個混合數字使用下劃線的例子嗎? –

回答

0

嘗試定義像這樣的解析方法簽名: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,您可以創建一個類似的域對象來表示數字。但是,這超出了這個問題的範圍。

0

解析時,您主要關心的是:如何定義不同的元素 - 或者使用什麼字符來分割字符串。在你的情況下,下劃線字符將整數與小數部分分開,反斜槓將分子與分母分開。

有了這個,你可以將字符串分解成有意義的部分。

要解析字符串,您可以使用@ 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個元素,12/3返回一個數組:

String[] inputParts = myInput.split("_"); 

然後你可能分裂的小數部分,並用2個元素,23返回另一個數組:

String[] fractionParts = inputParts[1].split("/"); 

你會ñ使用一些邏輯來處理您可能會收到的不同輸入。有時你可能只會得到一個分數,有時候是一個整數加上一個分數。