【发布时间】:2020-11-27 14:07:39
【问题描述】:
我正在编写一个导数计算器,我需要将一个给定的字符串输出划分为一个字符串数组,但是我当前的分割命令不能很好地处理负数,我需要它不要在 * 之后分割减号,/,^,(,sin(,cos(,tan( (我仍然没有在我的代码中实现 sin、cos 和 tan,但我会的,所以我想知道如何在它之后不拆分减号)。
代码:
public class Graph {
private String function;
private final String ONLY_POSITIVE_DELIMITER = "(?<=[+-/*^()])|(?=[+-/*^()])";
public Graph(String function) {
this.function = function;
}
public String getDerivative() {
return null;
}
private List<String> getArguments() {
String[] split = function.split(ONLY_POSITIVE_DELIMITER);
List<String> args = new ArrayList<>(Arrays.asList(split));
System.out.println("Splitten der Funktion: "+args);
return args;
}
}
这会将 1 - ( -2 * -1 ) -3 变成 [1, -, (, -, 2, *, -, 1, ), -, 3],但我希望它变成:[1, -, (, -2, *, -1, ), -, 3]
【问题讨论】:
-
不,这是一个非常糟糕的主意,因为没有人会输入这样的数学表达式。
-
我做了,因为我以为你指的是表达不够清楚。
标签: java regex math calculator