将字符串转换为公式

问题描述:

我试图使用ScriptEngine将字符串转换为公式。 我的代码要求一个线性方程和一个X值。之后,它将替换x的值。 当我尝试后加“*”,“()”这是行不通的,因此它不评估串式将字符串转换为公式

package known; 

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 
import java.util.Scanner; 
import static java.util.stream.DoubleStream.concat; 
import javax.script.ScriptException; 

/** 
* 
* @author netof 
*/ 
public class Known { 

    /**3 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) throws ScriptException { 



     System.out.println("Insert your equation"); 
     Scanner sc = new Scanner(System.in); 
     String equation = sc.nextLine(); 
     System.out.println("Insert value for X"); 
     String x = sc.nextLine(); 



     System.out.println(); 

     String test = equation.replace("x","("+x+")"); 



     if(test.contains("("+x+")")){ 

      String replace = test.replace("("+")", "*"); 

      System.out.println(replace); 

     }else{ 
      System.out.println("Can't Replace"); 
     } 

} 
    ScriptEngineManager mgr = new ScriptEngineManager(); 
ScriptEngine engine = mgr.getEngineByName("JavaScript"); 
String convert = replace; 
System.out.println(engine.eval(replace)); 
} 
+1

1.此代码无法编译('replace'未定义,'System.out.println'在方法外)。 2.目前尚不清楚预期产出和实际产出(以及投入)。 http://*.com/help/mcve –

+0

如果用户输入“z”作为未知,该怎么办?如果有不止一个未知数呢?不是一个好的概念。 – duffymo

你试图让X为INT而不是字符串?

int x = sc.nextIn();

或者,可以分析该字符串x作为INT

序列X = sc.nextLine(); int xx = Integer.parseInt(x);

只是几个建议。