Android计算器,带有单个编辑文本,显示完整的输入和输出

时间:2013-06-23 18:07:20

标签: android calculator

我想显示我的应用的完整输入和输出。

例如:

点击计算器中的“=”后需要显示

2+2=4

我的问题是app意外关闭。

package com.scientific.calculator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ToggleButton;

public class Calculator extends Activity{

    EditText display;
    Button btn,btnop,add,sub,mul,div;
    ToggleButton shift;
    String operator,result;
    float value=0;
    Character op = 'q';

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calculator);
        display = (EditText)findViewById(R.id.etDisplay);
        shift = (ToggleButton)findViewById(R.id.tbShift);
    }

    public void set_number(View v) {
        // TODO Auto-generated method stub
        btn = (Button)findViewById(v.getId());
        result = display.getText().toString();
        display.setText(result+btn.getText().toString());
    }

     public void btnplusclicked(View v){
           perform(v);
           op = '+';

          }

          public void btnminusclicked(View v){
           perform(v);
             op = '-';

          }
          public void btndivideclicked(View v){
           perform(v);
           op = '÷';

          }
          public void btnmulticlicked(View v){
           perform(v);
           op = '×';

          }

          public void btnequalClicked(View v){
              evaluate();

          }

          public void perform(View v) {
                // TODO Auto-generated method stub
                btnop=(Button)findViewById(v.getId());
                result=display.getText().toString();
                operator=btnop.getText().toString();
                display.setText(result+operator);
               }
                  private void evaluate() {
                // TODO Auto-generated method stub
                      value=Float.valueOf(display.getText().toString());
                if(op == '+')
                 value=Float.valueOf(display.getText().toString())+value;
                else if(op == '-')
                    value=Float.valueOf(display.getText().toString())-value;
                else if(op == '/')
                    value=Float.valueOf(display.getText().toString())/value;
                else if(op == '*')
                    value=Float.valueOf(display.getText().toString())*value;

                display.setText(String.valueOf(value));
               }


}

2 个答案:

答案 0 :(得分:0)

尝试理解这种方式。点击等于evaluate()时会调用。

其中第一行是value=Float.valueOf(display.getText().toString());
那就是将display转换为Float 虽然计算机能够转换第一个数字,但是当它到来时,它们之间会读取运算符。它不能转换它。因此崩溃。只是为了放心。

键入2,然后按equal我敢打赌它不会崩溃。

现在你要做的就是。什么时候调用运算符(+ - * /)。使用float变量并计算它并将其保存在内存中。一旦用户按下等于。显示该值。虽然很简单。

更多参考请查看simple calcomplex calc

答案 1 :(得分:0)

您似乎正在尝试将'123+25'解析为浮动。所以它会给出错误  如果用户按下'1+2-3*4'您的operator '*'会怎么样。所以它可能无法正常工作。请在这里查看calculator for android ..

的一个很好的例子