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

为什么我点等于号程序会闪退

package com.example.demo.caculatordemo;

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

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;

   @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_clear = (Button)findViewById(R.id.btn_clear);
       btn_del = (Button)findViewById(R.id.btn_del);
       btn_plus = (Button)findViewById(R.id.btn_plus);
       btn_minus = (Button)findViewById(R.id.btn_minus);
       btn_multiply = (Button)findViewById(R.id.btn_mutiply);
       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);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       // Inflate the menu; this adds items to the action bar if it is present.
       getMenuInflater().inflate(R.menu.menu_main, menu);
       return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       // Handle action bar item clicks here. The action bar will
       // automatically handle clicks on the Home/Up button, so long
       // as you specify a parent activity in AndroidManifest.xml.
       int id = item.getItemId();

       //noinspection SimplifiableIfStatement
       if (id == R.id.action_settings) {
           return true;
       }

       return super.onOptionsItemSelected(item);
   }

   @Override
   public void onClick(View v) {
       String str = et_input.getText().toString();
       switch (v.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)v).getText());
               break;
           case R.id.btn_plus:
           case R.id.btn_minus:
           case R.id.btn_mutiply:
           case R.id.btn_divide:
               if(clear_flag){
                   clear_flag = false;
                   str="";
                   et_input.setText("");
               }
               et_input.setText(str+" "+((Button)v).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;
           default:
       }
   }
   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(0,exp.indexOf(" ")+3);//运算符后面的字符
       if (!s1.equals("") && !s2.equals("")){
           double d1 = Double.parseDouble(s1);
           double d2 = Double.parseDouble(s2);
           if (op.equals("+")){
               result = d1 + d2;
           }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("÷")) {
               result = 0;
           }
           if (!s2.contains(".")) {
               int r = (int) result;
               et_input.setText(r + "");
           } else {
               et_input.setText(result + "");
           }
       }else {
           et_input.setText("");
       }
   }
}

正在回答

3 回答

逻辑代码打错了

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

.....

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

已解决

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

慕盖茨9561625

怎么改的啊
2016-05-06 回复 有任何疑惑可以回复我~
#2

峰峰峰峰峰丶

怎么解决
2016-05-08 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么我点等于号程序会闪退

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