2017-04-04 98 views
-4

我試圖使用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://stackoverflow.com/help/mcve –

+0

如果用戶輸入「z」作爲未知,該怎麼辦?如果有不止一個未知數呢?不是一個好的概念。 – duffymo

回答

0

你試圖讓X爲INT而不是字符串?

int x = sc.nextIn();

或者,可以分析該字符串x作爲INT

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

只是幾個建議。