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

パーサーが必要です。

frugi のアドバイスに従って Java ライブラリを使用することも、独自のライブラリを実装することもできます。

実装が簡単で、この問題に適したパーサーは、Shunting Yard アルゴリズムです。

独自のパーサーを実装する利点:

  • 文法と表現をより細かく制御できます。
  • 良い経験。
  • 楽しい。

短所:

  • サードパーティのライブラリよりも(明らかに)準備に時間がかかります。
  • バグる可能性があります。

自分で書くことをお勧めします!

于 2012-06-07T09:31:04.470 に答える
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 に答える