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

Android新手自己写的计算器代码,一进虚拟机就闪退,一个礼拜未解决,拜求各位帮助。

Android新手自己写的计算器代码,一进虚拟机就闪退,一个礼拜未解决,拜求各位帮助。

三声蘸酱 2014-12-09 17:16:19
package com.hl.mycaculater2;import java.util.regex.Pattern;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.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.GridLayout;public class MainActivity extends Activity { private EditText result;//设置输出文本private static String Num = "0";//设置结果private static String Num1 = "0";private static String Num2 = "0";private static int flag = 0;//标志位public oprationType OT = null;private int[] btOT = {R.id.btAdd,R.id.btSub,R.id.btMul,R.id.btDiv};private Button[] BTOT = new Button[btOT.length];//创建四个操作按键private int[] btID = {R.id.bt0,R.id.bt1,R.id.bt2,R.id.bt3,R.id.bt4,R.id.bt5,R.id.bt6,R.id.bt7,R.id.bt8,R.id.bt9,R.id.btPoi};private Button[] BTID = new Button[btID.length];//创建数字按键private GridLayout gly;    @Override        protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                gly = (GridLayout) findViewById(R.layout.activity_main);                result = (EditText) findViewById(R.id.result);        result.setText("0");        result.setEnabled(false);                GetNumber get = new GetNumber();        for(int i=0;i<btID.length;i++){        BTID[i] = (Button)findViewById(btID.length);        BTID[i].setOnClickListener(get);        if(get == null){        Log.i("tag", " 'get' is null ");        }        }                GetOpType getOT = new GetOpType();        for(int i=0;i<btID.length;i++){        BTOT[i] = (Button)findViewById(btOT.length);        BTOT[i].setOnClickListener(getOT);        if(getOT == null){        Log.i("tag", " 'getOT' is null ");        }        }                Button btEqual = (Button) findViewById(R.id.btEqu);//设置等号键        btEqual.setOnClickListener(new OnClickListener() {@Override public void onClick(View v) { // TODO Auto-generated method stub if (flag == 0) {      Num2 = result.getText().toString();      if (OT == oprationType.Div && Num2.equals("0")) {      result.setText("0不能为被除数");      } else {      Num = OT.Values(Num1, Num2);      Num1 = Num;      Num2 = "0";      result.setText(Num);      flag = 1;      gly.setBackgroundResource(R.drawable.ic_launcher);      }      } } });            Button btClean = (Button)findViewById(R.id.btCle);//设置清屏键    btClean.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } });                Button btDelete = (Button)findViewById(R.id.btDel);//设置删除键        btDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } });                    }    class GetNumber implements OnClickListener {//设置输出显示    @Override    public void onClick(View v) {    // TODO Auto-generated method stub    if(flag == 1){    Num = "0";    }    if(Num.equals("0")){    result.setText("");    Num = v.getId() == R.id.btPoi ? "0":"";//????    }    String txt = ((Button) v).getText().toString();              boolean s = Pattern.matches("-*(\\d+).?(\\d)*", Num + txt);              Num = s ? (Num + txt) : Num;              gly.setBackgroundResource(R.drawable.ic_launcher);              result.setText(Num);      }      }    class GetOpType implements OnClickListener{//设置操作跳转    @Override    public void onClick(View v) {    // TODO Auto-generated method stub    Num1 = result.getText().toString();    switch (v.getId()) {    case R.id.btAdd:    OT = oprationType.Add;    break;    case R.id.btSub:    OT = oprationType.Sub;    break;    case R.id.btMul:    OT = oprationType.Mul;    break;    case R.id.btDiv:    OT = oprationType.Div;    break;    default:    break;    }    Num = "0";    flag = 0;    gly.setBackgroundResource(R.drawable.ic_launcher);    }       }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.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();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}
查看完整描述

5 回答

?
Icurse

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

我的也闪退  求教 为什么


查看完整回答
反对 回复 2016-08-15
?
木流深

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

不好意思,我想请问下怎么解决闪退问题的,我的也闪退

查看完整回答
反对 回复 2015-10-26
?
三声蘸酱

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

已经解决,谢谢大家

查看完整回答
反对 回复 2014-12-09
?
三声蘸酱

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

5486be3a000162b705000253.jpg

新手看不懂的报错信息

查看完整回答
反对 回复 2014-12-09
?
三声蘸酱

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

oprationType.java


package com.hl.mycaculater2;


import java.math.BigDecimal;


public enum oprationType {

Add,Sub,Mul,Div;

public String Values(String number1,String number2) {

BigDecimal num1 = new BigDecimal(number1);

BigDecimal num2 = new BigDecimal(number2);

BigDecimal num = BigDecimal.valueOf(0);

switch (this) {

case Add:

num = num1.add(num2);

break;

case Sub:

num = num1.subtract(num2);

break;

case Mul:

num = num1.multiply(num2);

break;

case Div:

num = num1.divide(num2);

break;

}

return num.stripTrailingZeros().toString();

}


}


查看完整回答
反对 回复 2014-12-09
  • 5 回答
  • 1 关注
  • 4264 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号