Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串来完成数学求和_Java_String_Numbers_Int - Fatal编程技术网

Java字符串来完成数学求和

Java字符串来完成数学求和,java,string,numbers,int,Java,String,Numbers,Int,在java中,我目前正在试图找到一种进行数学求和的方法,方法是将文本键入JTextField,将其放入字符串,然后将其转换为int并求解。但问题是,我不想简单地在字符串中输入一个数字,而是一个实际的和,包括加法、减法等 目前,它只接受这样的操作,1将从字符串转换为int,但当我执行“1+1”或甚至仅执行“1+”时,它会到处抛出异常,因为“+”不是数字。 我已经知道它不起作用了,因为int只允许数字 有没有一种方法可以安全地在文本字段中键入一个完整的和,并以某种方式将其转换为整数?比如键入7-2*

在java中,我目前正在试图找到一种进行数学求和的方法,方法是将文本键入JTextField,将其放入字符串,然后将其转换为int并求解。但问题是,我不想简单地在字符串中输入一个数字,而是一个实际的和,包括加法、减法等

目前,它只接受这样的操作,1将从字符串转换为int,但当我执行“1+1”或甚至仅执行“1+”时,它会到处抛出异常,因为“+”不是数字。
我已经知道它不起作用了,因为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);
  }         
}