why it can not work when i click on the operation first? : <p>I try to use this code but it works when i click number first when i 
click on operation first. it doesn't work.example sin(30) not work 
when i click 2sin(30). it works.  can anyone help me?
</p>
<pre>

    public class MainActivity extends ActionBarActivity {
        // IDs of all the numeric buttons
        private int[] numericButtons = {R.id.btnZero, R.id.btnOne, R.id.btnTwo, R.id.btnThree, R.id.btnFour, R.id.btnFive, R.id.btnSix, R.id.btnSeven, R.id.btnEight, R.id.btnNine};
        // IDs of all the operator buttons
        private int[] operatorButtons = {R.id.btnAdd, R.id.btnSubtract, R.id.btnMultiply, R.id.btnDivide,R.id.buttonSqr,R.id.tan,R.id.cos,
                R.id.sin,R.id.open_bracket,R.id.close_bracket};
        // TextView used to display the output
        private EditText txtScreen;
        // Represent whether the lastly pressed key is numeric or not
        private boolean lastNumeric;
        // Represent that current state is in error or not
        private boolean stateError;
        // If true, do not allow to add another DOT
        private boolean lastDot;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // Find the TextView
            this.txtScreen = (EditText) findViewById(R.id.txtScreen);
            // Find and set OnClickListener to numeric buttons
            setNumericOnClickListener();
            // Find and set OnClickListener to operator buttons, equal button and decimal point button
            setOperatorOnClickListener();
        }
    
    
          //Find and set OnClickListener to numeric buttons.
        private void setNumericOnClickListener() {
            // Create a common OnClickListener
            View.OnClickListener listener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Just append/set the text of clicked button
                    Button button = (Button) v;
                    if (stateError) {
                        // If current state is Error, replace the error message
                        txtScreen.setText(button.getText());
                        stateError = false;
                    } else {
                        // If not, already there is a valid expression so append to it
                        txtScreen.append(button.getText());
    
                    }
                    // Set the flag
                    lastNumeric = true;
                }
            };
            // Assign the listener to all the numeric buttons
            for (int id : numericButtons) {
                findViewById(id).setOnClickListener(listener);
            }
        }
    
    
          //Find and set OnClickListener to operator buttons, equal button and decimal point button.
        private void setOperatorOnClickListener() {
            // Create a common OnClickListener for operators
            View.OnClickListener listener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // If the current state is Error do not append the operator
                    // If the last input is number only, append the operator
                    if (lastNumeric && !stateError) {
                        Button button = (Button) v;
                        txtScreen.append(button.getText());
                        lastNumeric = false;
                        lastDot = false;    // Reset the DOT flag
                    }
                }
            };
            // Assign the listener to all the operator buttons
            for (int id : operatorButtons) {
                findViewById(id).setOnClickListener(listener);
            }
            // Decimal point
            findViewById(R.id.btnDot).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (lastNumeric && !stateError && !lastDot) {
                        txtScreen.append(".");
                        lastNumeric = false;
                        lastDot = true;
                    }
                }
            });
    
            //delete
            findViewById(R.id.btndel).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (txtScreen.getText().toString().length() > 1) {
                        //remove string
                        String screen_new = txtScreen.getText().toString().substring(0, txtScreen.getText().toString().length() - 1);
                        txtScreen.setText(screen_new);
                    } else {
                        txtScreen.setText("");
                    }
                    lastNumeric = false;
                    stateError = false;
                    lastDot = false;
                }
            });
            // Clear button
            findViewById(R.id.btnClear).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    txtScreen.setText("");  // Clear the screen
                    // Reset all the states and flags
                    lastNumeric = false;
                    stateError = false;
                    lastDot = false;
                }
            });
            // Equal button
            findViewById(R.id.btnEqual).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onEqual();
                }
            });
        }
    
        //Logic to calculate the solution
        private void onEqual() {
            // If the current state is error, nothing to do.
            // If the last input is a number only, solution can be found.
            if (lastNumeric && !stateError) {
                // Read the expression
                String txt = txtScreen.getText().toString();
                txt = txt.replaceAll("x", "*").replaceAll("÷", "/");
                // Create an Expression (A class from exp4j library)
                Expression expression = new ExpressionBuilder(txt).build();
                try {
                    // Calculate the result and display
                    double result = expression.evaluate();
                    txtScreen.setText(Double.toString(result));
                    lastDot = true; // Result contains a dot
                } catch (ArithmeticException ex) {
                    // Display an error message
                    txtScreen.setText("Error");
                    stateError = true;
                    lastNumeric = false;
                }
            }
        }
    }

</pre>