Java 如何将数学方程分解为系数和指数?
我正在用java计算一些方程式。我想使用单链表。节点应该有两个整数数据:系数和指数 这里有一个例子: 方程式=18x^75-4x^56+18x^37+18x^19-18x^9-12 链表=节点118,75->节点2-4,56。。。应该是这样的 我只是要求分开Java 如何将数学方程分解为系数和指数?,java,string,math,split,Java,String,Math,Split,我正在用java计算一些方程式。我想使用单链表。节点应该有两个整数数据:系数和指数 这里有一个例子: 方程式=18x^75-4x^56+18x^37+18x^19-18x^9-12 链表=节点118,75->节点2-4,56。。。应该是这样的 我只是要求分开 String equation = "18x^75-4x^56+18x^37+18x^19-18x^9-12"; String[] terms = equation.split("[0-9]+(?<=[-+*/()])|(?=[-+*
String equation = "18x^75-4x^56+18x^37+18x^19-18x^9-12";
String[] terms = equation.split("[0-9]+(?<=[-+*/()])|(?=[-+*/()])");
for (String term : terms) {
System.out.println(term);
}
您可以首先使用+-分隔符拆分方程式,以便获得每个单项的数组。请注意,如果术语为负数,则希望保留符号。
然后,您可以通过术语数组进行流式处理,对于每个术语,使用分隔符x^进一步拆分它。这样,您将得到两个拆分项—x^左侧的一个是系数,右侧的一个是指数。
将系数和指数存储在条目中。
将条目存储在链接列表中。
以下是一个工作示例:
String equation = "18x^75-4x^56+18x^37+18x^19-18x^9-12";
String[] terms = equation.split("\\+|(?=\\-)");
Arrays.stream(terms).forEach(System.out::println);
List list = new LinkedList<Map.Entry<Integer, Integer>>();
Arrays.stream(terms).filter(t -> t.contains("x^")).forEach(
s -> list.add(new AbstractMap.SimpleEntry(Integer.parseInt(s.split("x\\^")[0]), Integer.parseInt(s.split("x\\^")[1]))));
//Finally, add the constant term.
list.add(new AbstractMap.SimpleEntry(Integer.parseInt(terms[terms.length - 1]), 0));
这个代码有效吗?不工作?您面临的问题是什么?使用选项来澄清您的问题。描述你面临的问题。你期望得到什么结果?你得到了什么?非常感谢。@KontMosyo,欢迎。请选择对您有帮助的答案,将您的问题标记为“已回答”。