在相等方法完成后,让android计算器接受并显示新的计算结果

时间:2018-11-04 16:35:31

标签: java android

我正在android中创建我的第一个计算器应用程序,我的代码运行平稳,但是我希望我的计算器能够在操作完成后接受新的计算。

例如:如果我加1 + 2,然后按下等号按钮,则答案3将返回并显示在我的编辑文本中。我想要一个新号码 编辑文本将清除并显示按下的新数字

听到我的代码:

public class MainActivity extends AppCompatActivity {

Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, multiply, divide, equal, decimal,clear;
EditText calculations;
String result;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    one = (Button) findViewById(R.id.num1);
    two = (Button) findViewById(R.id.num2);
    three = (Button) findViewById(R.id.num3);
    four = (Button) findViewById(R.id.num4);
    five = (Button) findViewById(R.id.num5);
    six = (Button) findViewById(R.id.num6);
    seven = (Button) findViewById(R.id.num7);
    eight = (Button) findViewById(R.id.num8);
    nine = (Button) findViewById(R.id.num9);
    zero = (Button) findViewById(R.id.num0);
    add = (Button) findViewById(R.id.add);
    sub = (Button) findViewById(R.id.sub);
    multiply = (Button) findViewById(R.id.multiply);
    divide = (Button) findViewById(R.id.divide);
    equal = (Button) findViewById(R.id.equal);
    decimal = (Button) findViewById(R.id.decimalPoint);
    clear = (Button) findViewById(R.id.clear);
    calculations = (EditText) findViewById(R.id.calculations);


    one.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("1");
        }
    });

    two.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("2");
        }
    });

    three.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("3");
        }
    });

    four.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("4");
        }
    });

    five.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("5");
        }
    });

    six.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("6");
        }
    });

    seven.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("7");
        }
    });

    eight.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("8");
        }
    });

    nine.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("9");
        }
    });

    zero.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("0");
        }
    });

    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("+");
        }
    });

    sub.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("-");
        }
    });

    multiply.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("×");
        }
    });

    divide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append("÷");
        }
    });


    decimal.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.append(".");
        }
    });


    clear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            calculations.setText(null);
        }
    });

    equal.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String expression = calculations.getText().toString();

            if(expression.contains("+")){

                String[] numbers = expression.split("\\+");
                String no1 = numbers[0];
                String no2 = numbers[1];

                Double num1 = Double.valueOf(no1);
                Double num2 = Double.valueOf(no2);
                Double added = num1+num2;

                if((added == Math.floor(added)) && !Double.isInfinite(added)) {

                    result = String.valueOf(added.intValue());
                    calculations.setText(result);
                }
                else {

                    result = String.valueOf(added);

                    calculations.setText(result);
                }

            }

            if(expression.contains("-")){

                String[] numbers = expression.split("\\-");
                String no1 = numbers[0];
                String no2 = numbers[1];

                Double num1 = Double.valueOf(no1);
                Double num2 = Double.valueOf(no2);
                Double subbed = num1-num2;

                if((subbed == Math.floor(subbed)) && !Double.isInfinite(subbed)) {

                    result = String.valueOf(subbed.intValue());
                    calculations.setText(result);
                }
                else {

                    result = String.valueOf(subbed);

                    calculations.setText(result);
                }

            }

            if(expression.contains("×")){

                String[] numbers = expression.split("\\×");
                String no1 = numbers[0];
                String no2 = numbers[1];

                Double num1 = Double.valueOf(no1);
                Double num2 = Double.valueOf(no2);
                Double multiplied = num1*num2;

                if((multiplied == Math.floor(multiplied)) && !Double.isInfinite(multiplied)) {

                    result = String.valueOf(multiplied.intValue());
                    calculations.setText(result);
                }
                else {

                    result = String.valueOf(multiplied);

                    calculations.setText(result);
                }

            }

            if(expression.contains("÷")){

                String[] numbers = expression.split("\\÷");
                String no1 = numbers[0];
                String no2 = numbers[1];

                Double num1 = Double.valueOf(no1);
                Double num2 = Double.valueOf(no2);
                Double divided = num1/num2;

                if((divided == Math.floor(divided)) && !Double.isInfinite(divided)) {

                    result = String.valueOf(divided.intValue());
                    calculations.setText(result);
                }
                else {

                    result = String.valueOf(divided);

                    calculations.setText(result);
                }

            }
            }

    });
}
}

0 个答案:

没有答案