为了账号安全,请及时绑定邮箱和手机立即绑定

用的android studio做的,加减乘除都等于0

package com.example.administrator.calculater;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.ArrayList;
import java.util.Arrays;




public class MainActivity extends Activity implements View.OnClickListener {
   Button btn_0;
   Button btn_1;
   Button btn_2;
   Button btn_3;
   Button btn_4;
   Button btn_5;
   Button btn_6;
   Button btn_7;
   Button btn_8;
   Button btn_9;
   Button btn_point;
   Button btn_clear;
   Button btn_del;
   Button btn_plus;
   Button btn_minus;
   Button btn_multiply;
   Button btn_divide;
   Button btn_equal;
   EditText et_input;
   Boolean clear_flag = true; //清空标识

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       btn_0 = (Button) findViewById(R.id.btn_0);
       btn_1 = (Button) findViewById(R.id.btn_1);
       btn_2 = (Button) findViewById(R.id.btn_2);
       btn_3 = (Button) findViewById(R.id.btn_3);
       btn_4 = (Button) findViewById(R.id.btn_4);
       btn_5 = (Button) findViewById(R.id.btn_5);
       btn_6 = (Button) findViewById(R.id.btn_6);
       btn_7 = (Button) findViewById(R.id.btn_7);
       btn_8 = (Button) findViewById(R.id.btn_8);
       btn_9 = (Button) findViewById(R.id.btn_9);
       btn_point = (Button) findViewById(R.id.btn_point);
       btn_del = (Button) findViewById(R.id.btn_del);
       btn_plus = (Button) findViewById(R.id.btn_plus);
       btn_clear = (Button) findViewById(R.id.btn_clear);
       btn_minus = (Button) findViewById(R.id.btn_minus);
       btn_multiply = (Button) findViewById(R.id.btn_multiply);
       btn_divide = (Button) findViewById(R.id.btn_divide);
       btn_equal = (Button) findViewById(R.id.btn_equal);
       et_input = (EditText) findViewById(R.id.et_input);

       btn_0.setOnClickListener(this);
       btn_1.setOnClickListener(this);
       btn_2.setOnClickListener(this);
       btn_3.setOnClickListener(this);
       btn_4.setOnClickListener(this);
       btn_5.setOnClickListener(this);
       btn_6.setOnClickListener(this);
       btn_7.setOnClickListener(this);
       btn_8.setOnClickListener(this);
       btn_9.setOnClickListener(this);
       btn_point.setOnClickListener(this);
       btn_clear.setOnClickListener(this);
       btn_del.setOnClickListener(this);
       btn_plus.setOnClickListener(this);
       btn_minus.setOnClickListener(this);
       btn_multiply.setOnClickListener(this);
       btn_divide.setOnClickListener(this);
       btn_equal.setOnClickListener(this);
       et_input.setOnClickListener(this);
   }

   @Override
   public void onClick(View view) {
       String str = et_input.getText().toString();
       switch (view.getId()) {
           case R.id.btn_0:
           case R.id.btn_1:
           case R.id.btn_2:
           case R.id.btn_3:
           case R.id.btn_4:
           case R.id.btn_5:
           case R.id.btn_6:
           case R.id.btn_7:
           case R.id.btn_8:
           case R.id.btn_9:
           case R.id.btn_point:
               if (clear_flag) {
                   clear_flag = false;
                   str = "";
                   et_input.setText("");

               }

               et_input.setText(str + ((Button) view).getText());
               break;
           case R.id.btn_plus:
           case R.id.btn_minus:
           case R.id.btn_multiply:
           case R.id.btn_divide:

               et_input.setText(str + " " + ((Button) view).getText() + " ");

               break;
           case R.id.btn_del:
//                if(clear_flag){
//                    clear_flag=false;
//                    str="";
//                    et_input.setText("");
//                }else
               if (str != null && !str.equals("")) {
                   et_input.setText(str.substring(0, str.length() - 1));
               }
               break;
           case R.id.btn_clear:
//                clear_flag = false;
//                str="";

               et_input.setText("");
               break;
           case R.id.btn_equal:

               getResult();
               break;


       }
   }

   private void getResult() {

       String exp = et_input.getText().toString();
//        if (exp == null || exp.equals("")) {
//            return;
//        }
//        if (!exp.contains(" ")) {
//            return;
//        }
//        if(clear_flag){
//            clear_flag = false;
//            return;
//        }
       clear_flag = true;
       double result = 0;
       String s1 = exp.substring(0, exp.indexOf(" "));//运算符前面得字符串
       String op = exp.substring(exp.indexOf(" ") + 1, exp.indexOf(" ") + 2);//截取到得运算符
       String s2 = exp.substring(exp.indexOf(" ") + 3);
       if (!s1.equals("") && !s2.equals("")) {
           double d1 = Double.parseDouble(s1);
           double d2 = Double.parseDouble(s2);
           if (op.equals("+")) {
               result = d1 + d2;
               Log.d("aaaa","aaaaaaaaaaaaaaaaa");
           } else if (op.equals("-")) {
               result = d1 - d2;

           } else if (op.equals("×")) {
               result = d1 * d2;
           } else if (op.equals("÷")) {
               if (d2 == 0) {
                   result = 0;
               } else {
                   result = d1 / d2;
               }
           }
           if (!s1.contains(".") && !s2.contains(".") && !op.equals("÷")) {
               int r = (int) result;
               et_input.setText(r + "");
           } else {
               et_input.setText(result + "");
           }
       } else if (!s1.equals("") && s2.equals("")) {
           et_input.setText(exp);
       } else if (s1.equals("") && !s2.equals("")) {
           double d2 = Double.parseDouble(s2);
           if (op.equals("+")) {
               result = 0 + d2;

           } else if (op.equals("-")) {
               result = 0 - d2;

           } else if (op.equals("×")) {
               result = 0;
           } else if (op.equals("÷")) {
               if (d2 == 0) {
                   result = 0;
               } else {
                   result = 0;
               }
           }
           if (!s2.contains(".")) {
               int r = (int) result;
               et_input.setText(r + "");
           } else {
               et_input.setText(result + "");
           }
       } else {
           et_input.setText("");
       }
   }
}

正在回答

4 回答

是layout中的加号和减号是用中文输入法写的,这个是英文的

1 回复 有任何疑惑可以回复我~

.。。我减乘除DEL和CLEAR都成功了,就只有加法失败。

0 回复 有任何疑惑可以回复我~

我也是哦

0 回复 有任何疑惑可以回复我~

我也是,我只发现问题就是op.equals("+")这个if 进不去,原因就不得而知了

0 回复 有任何疑惑可以回复我~
#1

慕桂英8450812 提问者

我也是这样。。
2016-02-15 回复 有任何疑惑可以回复我~
#2

对白122

我也是这样....请问大家解决了么
2016-03-22 回复 有任何疑惑可以回复我~
#3

yaxin

我也是
2016-04-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第一门课(入门篇)
  • 参与学习       312584    人
  • 解答问题       4633    个

想快速掌握Android应用开发基础,选择学习这门课程就对了。

进入课程

用的android studio做的,加减乘除都等于0

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信