java - 使用 Java split 计算数学表达式

标签 java regex split expression

在处理这个问题一段时间后,我无法准确地找出我需要的 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)

感谢大家的帮助。

最佳答案

operandsoperators 是一个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/

相关文章:

java - 使用 Spring Boot Rest API 的非典型 JSON 配置

r - 如何在后视中使用交替

Javascript:请需要正则表达式帮助

c# - Regex MatchCollection 得到太多结果

sql-server - 在SQL Server 2012中将字符串拆分为一行

java - 如何使用 apache poi 将背景图像设置为居中

java - 当 QTP 使用 Java Addin 安装时,用 Java 开发的客户端应用程序无法启动

c++ - 如何在一个点上拆分字符串并有效地提取所有字段?

JavaScript 正则表达式按单词或冒号拆分

java - 如何为maven项目创建新的maven依赖插件