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

点击“等号”程序就退出运行了,哪位大神帮我看下哪里有问题?

点击“等号”程序就退出运行了,哪位大神帮我看下哪里有问题?

qq_Inmylife_1 2016-09-22 22:40:23
package com.huihui.administrator.mycalculator; import android.app.Activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; 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_plus;    Button btn_min;    Button btn_mul;    Button btn_div;    Button btn_dot;    Button btn_eql;    Button btn_C;    Button btn_Del;    TextView txt;    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_plus= (Button) findViewById(R.id.btn_PLU);         btn_min= (Button) findViewById(R.id.btn_MIN);         btn_mul= (Button) findViewById(R.id.btn_MUL);         btn_div= (Button) findViewById(R.id.btn_div);         btn_eql= (Button) findViewById(R.id.btn_Eql);         btn_dot= (Button) findViewById(R.id.btn_DOT);         btn_C= (Button) findViewById(R.id.btn_C);         btn_Del= (Button) findViewById(R.id.btn_DEL);         txt= (TextView) findViewById(R.id.textView);         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_plus.setOnClickListener(this);         btn_min.setOnClickListener(this);         btn_mul.setOnClickListener(this);         btn_div.setOnClickListener(this);         btn_C.setOnClickListener(this);         btn_Del.setOnClickListener(this);         btn_dot.setOnClickListener(this);         btn_eql.setOnClickListener(this);     }     @Override     public void onClick(View v) {          String str = txt.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_DOT:                 if (clear_flag){                     clear_flag=false;                     str="";                     txt.setText("");                 }                  txt.setText(str+((Button)v).getText());             break;             case R.id.btn_div:             case R.id.btn_MIN:             case R.id.btn_MUL:             case R.id.btn_PLU:                 if (clear_flag){                     clear_flag=false;                     str="";                     txt.setText("");                 }                 txt.setText(str+" "+((Button)v).getText()+" ");             break;             case R.id.btn_C:                 clear_flag=false;                 str="";                 txt.setText("");                 break;             case R.id.btn_DEL:                 if (clear_flag){                     clear_flag=false;                     str="";                     txt.setText("");                 }                 else  if (str!=null&&str!=""){                     txt.setText(str.substring(0,str.length()-1));                 }                 break;             case R.id.btn_Eql:                 getResult();                 break;         }     }     public void getResult(){         String exp = txt.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 A=exp.substring(0,exp.indexOf(" "));         String OP=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);         String B=exp.substring(exp.indexOf(" ")+3);         if (!A.equals("")&&!B.equals("")){             double d1=Double.parseDouble(A);             double d2=Double.parseDouble(B);             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 (!A.contains(".")&&!B.contains(".")&&!OP.equals("÷")){                 int r = (int)result;                 txt.setText(r+"");             }             else {                 txt.setText(result+"");             }         }          else if(!A.equals("")&&B.equals("")){                 txt.setText(exp);         }         else if(A.equals("")&&!B.equals("")){             double d2=Double.parseDouble(B);             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 (!B.contains(".")){                 int r = (int)result;                 txt.setText(r+"");             }             else {                 txt.setText(result+"");             }         }else {                 txt.setText("");         }     } }
查看完整描述

3 回答

已采纳
?
ziom

TA贡献948条经验 获得超1109个赞

txt的初始值是" "吧

查看完整回答
1 反对 回复 2016-09-23
?
qq_Inmylife_1

TA贡献1条经验 获得超0个赞

只要一开始运行时点一下Button“C”,就可以。还没找到是什么原因

查看完整回答
反对 回复 2016-09-23
?
dky

TA贡献93条经验 获得超26个赞

substring越界了 ,请采纳,或继续问

查看完整回答
反对 回复 2016-09-22
  • qq_Inmylife_1
    qq_Inmylife_1
    谢谢!可以说具体点吗?想不出哪里越界了,下面是我的思路,是哪里出了问题? 比如exp的值为“15 + 12” String A=exp.substring(0,exp.indexOf(" "));//截取从开始到第一个空格的内容(不包括空格)即15 String OP=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);//截取运算符号 即+ String B=exp.substring(exp.indexOf(" ")+3);//截取运算符号后的空格之后的内容 即12
  • 3 回答
  • 1 关注
  • 1587 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信