Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java分数计算器:解析_Java - Fatal编程技术网

Java分数计算器:解析

Java分数计算器:解析,java,Java,我正在为学校做一个Java分数计算器,我遇到的最大问题之一是解析。当我只使用数字时,我可以使用它,但因为它是一个分数计算器,所以我们包括下划线(对于混合数字)和反斜杠(对于分数)。在使用数字以外的字符时,如何使用parse方法? 混合数字示例:4_7/8尝试定义解析方法签名,如下所示:BigDecimal parse(String)。现在,您可以让它返回null。接下来,为您需要支持的各种场景编写单元测试。从简单开始。虽然您确实需要能够解析“-4_7/8”,但首先确保您能够解析“7”、“8”、“

我正在为学校做一个Java分数计算器,我遇到的最大问题之一是解析。当我只使用数字时,我可以使用它,但因为它是一个分数计算器,所以我们包括下划线(对于混合数字)和反斜杠(对于分数)。在使用数字以外的字符时,如何使用parse方法?
混合数字示例:4_7/8

尝试定义解析方法签名,如下所示:
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"));
}
然后,迭代地“修复”您的
解析
函数,直到它通过所有测试。提示:您应该尝试将复杂的场景分解为更简单的场景,您可以通过使用与给定参数不同的参数调用函数本身并对结果执行某些操作来实现这一点。例如,假设您的函数已经知道如何正确解析“7”和“8”,您可以使用它为分子和分母创建单独的
BigDecimal
对象。你怎么能把这两个物体变成一个呢

通过调用任何以
char[]
String
为参数的
BigDecimal
构造函数,不要欺骗


注意,您不需要使用
BigDecimal
,您可以创建一个类似的域对象来表示数字。但是,这超出了这个问题的范围。

在解析时,您主要关心的是:如何分隔不同的元素,或者使用什么字符来划分字符串。在本例中,下划线字符将整数与其小数部分分开,反斜杠将分子与分母分开

有了这个,你就可以开始把一个字符串分割成有意义的部分

要解析字符串,可以使用@3kings提到的
string.split()
方法,这是一种方法

String.split()

假设您收到一个
1\u 2/3
的输入,并将其存储在一个名为
inputParts
的变量中,您可以将其拆分为
字符,并返回一个包含2个元素的数组,
1
2/3

String[] inputParts = myInput.split("_");
然后可以拆分小数部分,并返回另一个包含2个元素的数组,
2
3

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

您需要一些逻辑来处理可能收到的不同输入。有时你可能只得到一个分数,有时是一个整数加一个分数。

do
String.split
method调用它们,你应该能够从它们开始,如果你举一些例子,这很容易理解。你能提供一个用下划线表示混合数的例子吗?添加到混合数下划线的例子中。