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 回答

三声蘸酱
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();
}
}
添加回答
举报
0/150
提交
取消