在处理这个问题一段时间后,我无法准确地找出我需要的 Regex 语法。
在我参加的 Java 类(class)中,我们的任务是构建一个计算器,该计算器能够获取表达式字符串(写有或没有括号)并正确计算它。
表达式解析背后的概念是你有一个字符串...
5+16/20-56+7-20*16/9
你想通过'split'得到两个ArrayLists:
{5,16,20,56,7,20,16,9}
{+,/,-,+,-,*,/}
然后您按照操作优先级顺序逐个执行操作,从 ArrayList 中清空操作,直到您的数字数组有一个元素:最终结果。
不幸的是,我没有使用 Regex
的经验,无法理解我正在阅读的教程和示例的任何意义。
我不知道如何根据 "[*-/+]"
进行拆分,也不知道如何选择整个 numbers拆分而不仅仅是数字。由于这些错误,我无法编译我的代码。我得到的一个有效代码片段:
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Tester
{
public static void main(String[] args)
{
String expression = "3+5+6-10*20/150-14+76%2";
// String[] operands = expression.split("");
String[] operators = expression.split("[0-9]");
// System.out.println(operands);
System.out.println(operators);
}
}
结果
[Ljava.lang.String;@308ab721
我不知道那是从哪里来的。
谁能帮我弄清楚我做错了什么?或者指出有关 Regex 的非常好的初学者类(class)?
感谢大家的帮助。
最佳答案
operands
和operators
是一个array
打印数组
你可以做
System.out.println(Arrays.toString(operands));
System.out.println(Arrays.toString(operators));
你应该这样拆分它:
String[] operands = expression.split("[\\+\\-\\*\\%\\/]");
String[] operators = expression.split("[0-9]+");
关于java - 使用 Java split 计算数学表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702173/