我正在尝试在 Android 中制作一个小型数学应用程序,但我发现了一个小问题。我的问题是,我希望我的应用程序能够正确解释 EditText 的内容,以便它不仅可以将数字作为输入,还可以将数学函数作为输入,例如正弦余弦正切对数等。我是不是专业的程序员,我以前从未发现过此类问题。
问问题
240 次
3 回答
2
你可以试试这个:
EditText et = (EditText)additem.findViewById(R.id.edittext);
String item = et.getText().toString();
String splitter[] = item.split("\\d+");
if(splitter[0].equals("sin"))
// perform sine
//similarly for other functions
于 2012-06-07T09:17:49.547 回答
2
您也可以尝试使用 java formel 解析器。有很多用于java的。例如:http ://www.speqmath.com/tutorials/expression_parser_java/index.html
这可能看起来像这样:
Parser prs = new Parser();
EditText et = (EditText)findViewById(R.id.edittext);
String expr = et.getText().toString();
String result = prs.parse(expr);
要安装它,您必须下载: http ://www.speqmath.com/tutorials/expression_parser_java/html/files/expression_parser_java.zip
然后你必须将java文件复制到eclipse中的源文件夹中。
你是这样做的吗?如果是这样,您可以发布例外情况。
于 2012-06-07T09:24:02.583 回答
2
你需要一个解析器。
您可以遵循 frugi 的建议并使用 java 库,也可以实现自己的库。
一个适用于这个问题的简单解析器是Shutting Yard 算法。
实现自己的解析器的优点:
- 更多地控制语法和表达。
- 好的经历。
- 乐趣。
缺点:
- 比 3rd 方库需要更多时间来准备(显然)。
- 可能是越野车。
我建议你自己写!
于 2012-06-07T09:31:04.470 回答