我想将字符串转换为整数,但它不起作用。我认为问题在于字符串不是"干净",请看这个例子:
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
。 (如果你想我也可以发布我的代码,但我不想让这个问题看起来很长。)
答案 0 :(得分:1)
为什么它不起作用?
由于此处有一些无效字符,String
无法解析为整数:
"(2+2)"
您无法使用(
解析)
+
和Integer.parseInt
等无效字符。但是,当+
是唯一的字符时,它是一个前导符号,它是有效的,即
String strOne = "+2";
String strTwo = "+2345";
String strThree = "+237645";
等...
有一种简单的方法可以解决它吗?
没有内置方法可以帮到您。但是,您可以查看与您的问题相关的其他帖子:
答案 1 :(得分:1)
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));
}
}