在Android中使用脚本引擎管理器来评估中缀表达式

3

我想在Android中实现以下代码。我该怎么做?

System.out.println("Enter a String");
Scanner sc = new Scanner(System.in);
String string = sc.next();

System.out.println(new ScriptEngineManager().getEngineByName("JavaScript").eval(string));//this is solving infix expression using javascript

Android API并没有提供这样的类。不过,您可以简单地实现自己的堆栈以评估表达式。请参见此处的第二个答案:http://stackoverflow.com/questions/7185589/how-to-calculate-expression-in-java - user2336315
我已经在lib中添加了jav8-jsr223-win-amd64-0.6.jar,我能够在我的应用程序中使用这些语句,但是当我执行.eval()时,应用程序会崩溃。有没有解决办法? - user2475511
我对这个库没有经验,但是发布相关的Android代码和堆栈跟踪信息会有助于解决问题。 - user2336315
ScriptEngineManager 工厂 = new ScriptEngineManager(); final ScriptEngine 引擎 = 工厂.getEngineByName("Jav8"); String 文本2 = filter(userInputText.getText().toString()); try { userInputText.setText((引擎.eval(文本2)).toString()); } catch (ScriptException e) { // TODO Auto-generated catch block e.printStackTrace(); } - user2475511
# Hello World program in Python print("Hello, World!")# PythonСИГуџёРђюHello WorldРђЮуеІт║Ј print№╝ѕРђюСйатЦй№╝їСИќуЋї№╝ЂРђЮ№╝Ѕ - ADTC
1个回答

0

你尝试过强制转换吗?就像这样,

double a = (double) engine.eval("25+36");

或者这样(toString());

System.out.println(new ScriptEngineManager().getEngineByName("JavaScript").eval(string).toString());

谢谢,但没有用。我写了一个自定义解析器。 - user2475511
我曾经尝试过它。它有效。希望你找到最好的。问候。 - Sabri Meviş
在Java中,当你打印到控制台时它是有效的,但在Android中它不起作用,因为你将结果显示在文本视图或其他地方,而不是控制台。 - user2475511

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接