Ввод математических функций, таких как косинус-касательный логарифм в Android

Я пытаюсь сделать небольшое математическое приложение в Android, но я нахожу небольшую проблему. Моя проблема заключается в том, что я хочу, чтобы мое приложение могло правильно интерпретировать содержимое EditText, чтобы оно могло принимать в качестве входных данных не только числа, но и математические команды, такие как синус-косинус-касательный логарифм и т. Д. Я Не эксперт-программист, и я никогда раньше не встречал этот тип проблем.

Вы также можете попробовать java formel parser. Для них есть куча. Например: 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.

Вы так поступили? Если бы вы могли опубликовать исключение.

Вы можете попробовать следующее:

 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 

Вам нужен парсер.

Вы можете следовать советам frugi и использовать библиотеку java, или вы можете реализовать свои собственные.

Простым парсером для реализации и подходящим для этой проблемы является алгоритм Shunting Yard.

Плюсы с внедрением собственного анализатора:

  • Гораздо больший контроль над грамматикой и выражениями.
  • Хороший опыт.
  • Весело.

Минусы:

  • Требуется больше времени, чтобы подготовиться (очевидно), чем сторонняя библиотека.
  • Может быть глючит.

Я бы рекомендовал писать свои собственные!