Java字符串来完成数学求和
在java中,我目前正在试图找到一种进行数学求和的方法,方法是将文本键入JTextField,将其放入字符串,然后将其转换为int并求解。但问题是,我不想简单地在字符串中输入一个数字,而是一个实际的和,包括加法、减法等 目前,它只接受这样的操作,1将从字符串转换为int,但当我执行“1+1”或甚至仅执行“1+”时,它会到处抛出异常,因为“+”不是数字。Java字符串来完成数学求和,java,string,numbers,int,Java,String,Numbers,Int,在java中,我目前正在试图找到一种进行数学求和的方法,方法是将文本键入JTextField,将其放入字符串,然后将其转换为int并求解。但问题是,我不想简单地在字符串中输入一个数字,而是一个实际的和,包括加法、减法等 目前,它只接受这样的操作,1将从字符串转换为int,但当我执行“1+1”或甚至仅执行“1+”时,它会到处抛出异常,因为“+”不是数字。 我已经知道它不起作用了,因为int只允许数字 有没有一种方法可以安全地在文本字段中键入一个完整的和,并以某种方式将其转换为整数?比如键入7-2*
我已经知道它不起作用了,因为int只允许数字 有没有一种方法可以安全地在文本字段中键入一个完整的和,并以某种方式将其转换为整数?比如键入7-2*5,然后将答案保存在整数中
谢谢。您可以使用
JavaScript
引擎:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String expression = textField.getText();
System.out.println(engine.eval(expression));
编辑以允许所有方程式:
你现在要做的就是允许罪恶,因为,棕褐色是这样的:
然后你可以做一些类似的事情:
5 + 5 - 2 / 5 + sin(55) - log(20)
任何您想要的。请参阅java.util.regex.Matcher或java.util.regex.Pattern 例如:
或者StringTokenizer类这将为您完成
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class Test {
public static void main(String[] args) throws Exception{
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "40+2";//any mathematical operations +,-,*,/
System.out.println(engine.eval(foo));
}
}
在这里,您可以放置描述log/cos等函数的方法
String st = "10+3";
int result;
for(int i=0;i<st.length();i++)
{
if(st.charAt(i)=='+')
{
result=Integer.parseInt(st.substring(0, i))+Integer.parseInt(st.substring(i+1, st.length()));
System.out.print(result);
}
}
String st=“10+3”;
int结果;
对于(int i=0;iYou可以使用JavaScript解析器在运行时计算表达式。实际上工作得很好,但不支持sin、cos、tan、log、平方根等,除了+-*/…谢谢大家,刚刚发现,你是对的,它确实工作,但你必须使用“Math.cos”而不是“cos”,所以我只使用了String.replace(“cos”),“Math.cos”)等。谢谢。你应该自己添加一个答案。这样人们就不会一次又一次地问同一个问题。@sk4llsrpg对不起,我不明白这是怎么回事?
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class Test {
public static void main(String[] args) throws Exception{
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "40+2";//any mathematical operations +,-,*,/
System.out.println(engine.eval(foo));
}
}
String st = "10+3";
int result;
for(int i=0;i<st.length();i++)
{
if(st.charAt(i)=='+')
{
result=Integer.parseInt(st.substring(0, i))+Integer.parseInt(st.substring(i+1, st.length()));
System.out.print(result);
}
}