我想将字符串转换为整数,但它不起作用。我认为问题在于字符串不“干净”,请参阅此示例:
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/