0

たとえば、電卓で複数の操作を実行したい:2+3*3/7。どうやってするか。誰でも私を助けることができます。電卓の1回の操作で動作します。

1つで複数の操作を計算する方法editText。このコードは、イコールボタンクリック方式で追加されます。

以下は私のコードです:

  btnEqualto.setOnClickListener(new OnClickListener() 

    {
        @Override

        public void onClick(View v) 

                      {

                     String str2 = edtxt.getText().toString();

                       if (buttonPressed.equals("+")) 

            {
                Log.e(TAG,"dot operation="+strDot);


                if (strDot.equals(".")) 

                {
                    Log.e(TAG, "If Codition :");


                    String str1[] = str2.split("[+]");

                    Log.e(TAG,"str1 ="+str1);

                    String strVal11 = str1[0];

                    String strVal22 = str1[1];

        Log.e(TAG, "strValues  :" + strVal11 + " & " + strVal22);

                    Double xx = Double.parseDouble(strVal11);

                    Double yy = Double.parseDouble(strVal22);

       Log.e(TAG, "Value of x :" + xx + "  AND y : " + yy);

                    Log.e(TAG, "dot operation");


                    Double result = xx + yy;

                    Log.e(TAG, "Result  :" + result);

                    edtxt.setText(result + "");


                    Log.e(TAG, "VAlue of Result :" + edtxt);

                }

                else

                {

                    Log.e(TAG, "If Codition :"+strVal2);

                    strDot = "";

                    String str1[] = str2.split("[+]");

                    strVal1 = str1[0];

                    strVal2 = str1[1];


                          Log.e(TAG, "Esle Condition 4 Pllus strValues  :" + strVal1 + " & " + strVal2);


                    x = Integer.parseInt(strVal1);

                    y = Integer.parseInt(strVal2);

            Log.e(TAG, "Value of x :" + x + "  AND y : " + y);

                    int result = x + y;

                    Log.e(TAG, "Result  :" + result);

                    edtxt.setText(result + "");
                                                    Log.e(TAG, "VAlue of Result :" + edtxt);

                }

            }

          }

         }

         );
4

1 に答える 1

2

exp4j を試してみてください: Java 用の単純な数式パーサーです。

exp4j は、人間が読める中置表記の数学用語を取り、最初に Dijkstra のシャンティング ヤード アルゴリズムを介して入力を後置 (RNP) 表記に変換し、単純なスタック アルゴリズムによって後置用語を評価することによって、その結果を評価します。

試してみて、これがうまくいくかどうかを確認してください..

于 2012-12-24T07:57:56.633 に答える