相关疑难解决方法(0)

Java中是否有eval()函数?

我有一个像下面这样的字符串:

String str = "4*5";
Run Code Online (Sandbox Code Playgroud)

现在我必须20通过使用字符串来获得结果.

我知道在其他一些语言中,这个eval()功能会做到这一点.我怎么能用Java做到这一点?

java eval

140
推荐指数
8
解决办法
15万
查看次数

如何解析以字符串形式给出的数学表达式并返回一个数字?

Java中是否有一种方法可以从这个数学表达式中获得结果:

String code = "5+4*(7-15)";
Run Code Online (Sandbox Code Playgroud)

另一方面,解析算术表达式的最佳方法是什么?

java string math parsing expression

39
推荐指数
5
解决办法
8万
查看次数

如何修改我的Shunting-Yard算法以便接受一元运算符?

我一直在努力在JavaScript中实现Shunting-Yard算法.

到目前为止,这是我的工作:

var userInput = prompt("Enter in a mathematical expression:");
var postFix = InfixToPostfix(userInput);
var result = EvaluateExpression(postFix);

document.write("Infix: " + userInput + "<br/>");
document.write("Postfix (RPN): " + postFix + "<br/>");
document.write("Result: " + result + "<br/>");


function EvaluateExpression(expression)
{
    var tokens = expression.split(/([0-9]+|[*+-\/()])/);
    var evalStack = [];

    while (tokens.length != 0)
    {
        var currentToken = tokens.shift();

        if (isNumber(currentToken))
        {
            evalStack.push(currentToken);
        }
        else if (isOperator(currentToken))
        {
            var operand1 = evalStack.pop();
            var operand2 = evalStack.pop();

            var result = PerformOperation(parseInt(operand1), parseInt(operand2), currentToken); …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm shunting-yard

20
推荐指数
2
解决办法
1万
查看次数

SQLite中的临时内存数据库

是否有可能以某种方式在SQLite中创建内存数据库,然后通过某些查询销毁它?

我需要这样做才能对我的数据库层进行单元测试.到目前为止,我只是通过创建正常的SQLite db文件并在所有测试后删除,但在内存中完成所有操作会好得多.

那么是否可以仅在内存中实例化数据库而无需向光盘写入任何内容?我不能只使用事务,因为我想创建全新的数据库.

sqlite jdbc

19
推荐指数
1
解决办法
1万
查看次数

在 Java 17 中使用 Javascript 脚本引擎

我必须将项目从 Java 8 迁移到 Java 17。

我可以解决大多数问题,但它包含一个方法,在该方法中我使用 ScriptEngineManager 来评估数学术语。

 ScriptEngineManager mgr = new ScriptEngineManager();
 ScriptEngine e = mgr.getEngineByName("JavaScript");
 
 String t = "5*7";
 if (isMathTerm(t)) {
    System.out.println(e.eval(t).toString());
 }
Run Code Online (Sandbox Code Playgroud)

在 Java 8 中它按要求工作,但在 Java 17 中e始终为 null。

据谷歌称,Java 17 不再支持 JavaScript 引擎。

由于项目限制,我不允许使用第三方库。

Java 17 中有没有正确的方法来处理这个问题?

java eval scriptengine java-17

17
推荐指数
1
解决办法
2万
查看次数

使用VB从字符串计算数学表达式

我想用VB计算一个字符串的算术表达式,任何想法?

作为一个例子:文本框中的"x + 2",我想评估表达式

vb.net math

9
推荐指数
2
解决办法
2万
查看次数

用于解析嵌套表达式的java方法

假设我已经编写了一个函数来评估一个简单的数学运算,并且我在字符串中有一些用户输入,例如:"1 + [2 + [3 + 4]]"如何解析这些方括号并首先提取最里面的文本(3 + 4),评估它,然后解析外括号(2 + 7)?我对正则表达式搜索和替换有基本的了解,但我知道他们不会像这样做递归.我想要一些基本的java代码来做到这一点,如果我可以避免它,还不是另一个jar/API.

java parsing

7
推荐指数
1
解决办法
8328
查看次数

编写字符串评估函数

我正在尝试编写一个String评估函数,即

evaluate("4 + 1") ; // returns 5 
evaluate("4 + 1 + 3") ; // returns 8 
evaluate("4 + 1 * 3") ; // returns 7 (not 15) 

The operators are + - / and *
Run Code Online (Sandbox Code Playgroud)

我的初期是使用正则表达式来收集运算符和数字,因为这些可以匹配.并且在找到该信息之后,以某种方式找出了优先考虑/*ove -+运营商的方法.

这是我开始的方式:

static String regex = "([\\+\\*-/])+";
static String digitRegex = "(\\d)+";

public static void main(String[] args) {
    System.out.println(getOperators("4 + 1 * 3"));
}

public static List<String> getOperators(String input) {
    Pattern p = Pattern.compile(regex);
    Matcher matcher = p.matcher(input);

    List<String> operatorList …
Run Code Online (Sandbox Code Playgroud)

java evaluation expression-evaluation operator-precedence

5
推荐指数
1
解决办法
2046
查看次数

Java字符串到数学方程

我需要实现函数public int eval(String infix) {...} ,当我像这样使用它时:

eval("3+2*(4+5)") 
Run Code Online (Sandbox Code Playgroud)

我必须得到21.

算术表达式可以包含'+','*'和括号.

那么,我怎样才能将其转换为数学方程?我不能使用非标准的库.

更新:找到解决方案.

它是2种方式:波兰表示法和使用ScriptEngine.


java

5
推荐指数
1
解决办法
2万
查看次数

将外部.jar添加到androidstudio项目中

bsh-2.0b4.jar通过进入Project structure -> Modules -> myProject -> Tab-Dependencies -> + Sign然后添加.jar文件将外部库添加到android-studio中的android项目中.我还尝试将文件复制到/ libs目录,然后在工作室中右键单击add as library...(两种方法独立!!).我插入以下代码作为测试

  import bsh.Interpreter;
  ...
  Interpreter interpreter = new Interpreter();
  interpreter.eval("result = (7+21*6)/(32-27)");
  return interpreter.get("result").toString();
Run Code Online (Sandbox Code Playgroud)

我用android中的buildin按钮编译.build.gradle看起来像:

  buildscript {
    repositories {
      mavenCentral()
    }
    dependencies {
     classpath 'com.android.tools.build:gradle:0.5.+'
    }
  }
  apply plugin: 'android'

  repositories {
    mavenCentral()
  }

  android {
     compileSdkVersion 17
     buildToolsVersion "17.0.0"

     defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17
     }
  }

  dependencies {
     compile 'com.android.support:support-v4:13.0.+'
  }
Run Code Online (Sandbox Code Playgroud)

但是当我编译所有内容时,我收到错误

  Gradle: error: package bsh does not exist …
Run Code Online (Sandbox Code Playgroud)

java android gradle android-studio

4
推荐指数
1
解决办法
1万
查看次数