我在java中遇到这个问题。当我写 3/5 + 3 时,它返回 18/5 并且它是正确的,但如果我写 3/5/+ 3 它返回 18/5 而不是错误
public static RatNum parse(String s) {
int x = 0;
int y = 0;
String split[] = s.split("/");
if (split.length == 2) {
x = Integer.parseInt(split[0]);
y = Integer.parseInt(split[1]);
return new RatNum(x, y);
} else if (split.length == 1) {
x = Integer.parseInt(s);
return new RatNum(x);
} else {
throw new NumberFormatException("Error");
}
}
最佳答案
这是因为正则表达式解析器删除了空条目:
"3/5/".split("/").length
将返回 2。
您可以通过确保它不以“/”开头或结尾来避免空条目:
while (s.startsWith("/"))
s = s.substring(1);
while (s.endsWith("/"))
s = s.substring(0, s.length()-1);
或者如果有空条目则抛出错误:
if (s.startsWith("/") || s.endsWith("/"))
throw new SomeError();
关于java - 需要 Java 中拆分的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299792/