java - 为什么我无法将字符串 "(2+2)"转换为整数(java)?

标签 java string int type-conversion

我想将字符串转换为整数,但它不起作用。我认为问题在于字符串不“干净”,请参阅此示例:

public class Test{
    public static void main(String[] args){
        String str = "(2+2)";
        int conv = Integer.parseInt(str);
        System.out.println(conv);
    }
}

为什么不起作用?我还可以定义 int x = (2+2);没有任何问题。

这里的问题到底是什么?有没有简单的方法来解决它?

<小时/>

*目的:我刚刚完成了一个代码,该代码将检测数学表达式是否正确(括号,符号,..算术内容)。例如,字符串输入为 ((8+7)*2)程序将返回true。 但现在我需要找到一种方法来计算它并返回它的解决方案,30 。 (如果您愿意,我也可以发布我的代码,但我不想让这个问题看起来很长。)

最佳答案

Integer.parseInt 需要一个字符串,但它需要一个字符串格式的数字。

(2+2) 是一个字符串,它无法计算 2+2。因此尝试转换非数值是行不通的。 ()+ 是非数值

更新:

根据我的研究,您可以使用built-in Javascript engine .

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

public class Main {
  public static void main(String[] args) throws ScriptException {
    String str = "2+2";
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");
    System.out.println(engine.eval(str));
    } 
}

关于java - 为什么我无法将字符串 "(2+2)"转换为整数(java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903163/

相关文章:

java - 如何添加新 child 而不覆盖其他 child

java - 当桌面 Pane 的大小发生变化时,更改桌面 Pane 内面板的大小

string - 在不使用 num2str 的情况下将数字转换为字符串

java - 如何将字符串格式化为强加格式?

java - 如何将带有 HTMLDocument 的 JTextPane 中的位置转换为 JTextPane 字符串文本中的位置

c# - 将字符串解析为 int,XSL 样式表内的 C#

java - 使用线程池执行任务时出现RejectedExecutionException : JAVA

java - 确定重载方法的输入

python - 方法上不支持的操作数类型

c - C 中 64 位整数的模乘法