java - 如何将带有运算符的字符串解析为整数?

标签 java android string parsing integer

我会直截了本地提出我的问题。我有一个带有一些值和运算符的字符串。让我们举个例子

4 * 24 + Math.sqrt(36) - 5

所以如果我这样做Integer.parseInt()它崩溃了。经过进一步搜索,我发现我必须使用解析器。但它们用于命令行 java,而我的用于 android。

所以我的问题是如何将此字符串“4 * 24 + Math.sqrt(36) - 5”转换为计算结果的整数?此方法还将包括 Math.sqrt ()功能?

谢谢。

编辑1:

回应hacker13ua

当我尝试你的 MAVEN 方法时,我收到此错误。知道为什么吗?

引起:java.lang.StringIndexOutOfBoundsException: length=1;区域开始=0;区域长度=3

我的代码:

final String foo = "4 * 24 + Math.sqrt(36) - 5";
                    Object i = MVEL.eval(foo);
                    String in = i.toString();
                    Toast.makeText(MainActivity.this,String.valueOf(in).toString(), Toast.LENGTH_LONG).show();

这是在我的 gradle 构建文件中

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'org.mvel:mvel2:2.2.7.Final'

}

谢谢

最佳答案

您可以使用 JavaScript 引擎。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main
{
    public static void main(final String[] args) throws ScriptException
    {
        final ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        final ScriptEngine engine = scriptEngineManager.getEngineByName("javascript");
        final String foo = "4 * 24 + Math.sqrt(36) - 5";
        System.out.println(engine.eval(foo));
    }
}

或者您可以使用 MVEL。 Maven 依赖:

<dependency>
    <groupId>org.mvel</groupId>
    <artifactId>mvel2</artifactId>
    <version>2.2.7.Final</version>
</dependency>

您的代码:

import org.mvel2.MVEL;

public class Main
{
    public static void main(final String[] args)
    {
        final String foo = "4 * 24 + Math.sqrt(36) - 5";
        System.out.println(MVEL.eval(foo));
    }
}

关于java - 如何将带有运算符的字符串解析为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36127419/

相关文章:

java - 为什么@UniqueConstraint在 hibernate 中不起作用?

java - 如何从excel文件中获取值?

android - 如何在Flutter中创建超链接图标?

android - 验证用户名和电子邮件崩溃,无法插入到 firebase 数据库

java - 在java中,有没有办法搜索存储在链表中的类的特定字段?

python - 从字符串中去除数字

java - 释放所有等待线程

JavaFX 不能使用 onAction

android - Eclipse 不识别 android SDK

Java 用户输入 YY-MM-DD 格式