4

我正在尝试在 Android 中制作一个小型数学应用程序,但我发现了一个小问题。我的问题是,我希望我的应用程序能够正确解释 EditText 的内容,以便它不仅可以将数字作为输入,还可以将数学函数作为输入,例如正弦余弦正切对数等。我是不是专业的程序员,我以前从未发现过此类问题。

4

3 回答 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 回答