import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; public class Calculater extends Activity { // 按钮侦听 private View.OnClickListener button_clicker = new View.OnClickListener() { private double NumCalculate(StringBuffer sb, int start, int end) { int index = -1; double res = 0; int flag = 0; if (sb.indexOf("+") != -1) { index = sb.indexOf("+"); } else if (sb.indexOf("-") != -1) { flag = 1; index = sb.indexOf("-"); } else if (sb.indexOf("*") != -1) { flag = 2; index = sb.indexOf("*"); } else if (sb.indexOf("/") != -1) { flag = 3; index = sb.indexOf("/"); } else { int fir = sb.indexOf("."); // 修正多个小数点的问题 if (fir != -1) { int sec = sb.indexOf(".", fir + 1); if (sec != -1) { sb = new StringBuffer().append(sb.substring(0, sec)); } } try { res = Double.parseDouble(sb.toString()); } catch (Exception e) { e.printStackTrace(); } } if (index != -1) { double numA = NumCalculate(new StringBuffer().append(sb .substring(0, index)), 0, index); double numB = NumCalculate(new StringBuffer().append(sb .substring(index + 1, end)), 0, end - index - 1); switch (flag) { case 0: res = numA + numB; break; case 1: res = numA - numB; break; case 2: res = numA * numB; break; case 3: res = numA / numB; break; default: break; } } return res; } public void onClick(View v) { StringBuffer content = new StringBuffer(et.getText().toString()); int viewId = v.getId(); if (viewId == R.id.Button_dot || viewId == R.id.Button_add || viewId == R.id.Button_sub || viewId == R.id.Button_mul || viewId == R.id.Button_div) { if (NAN) { if (!isDot && viewId == R.id.Button_dot) { content.append("0"); } else { content.deleteCharAt(content.length() - 1); } } else if (content.length() < 1) { content.append("0"); } } isDot = false; NAN = false; switch (viewId) { case R.id.Button00: content.append("0"); break; case R.id.Button01: content.append("1"); break; case R.id.Button02: content.append("2"); break; case R.id.Button03: content.append("3"); break; case R.id.Button04: content.append("4"); break; case R.id.Button05: content.append("5"); break; case R.id.Button06: content.append("6"); break; case R.id.Button07: content.append("7"); break; case R.id.Button08: content.append("8"); break; case R.id.Button09: content.append("9"); break; case R.id.Button_add: NAN = true; content.append("+"); break; case R.id.Button_sub: NAN = true; content.append("-"); break; case R.id.Button_mul: NAN = true; content.append("*"); break; case R.id.Button_div: NAN = true; content.append("/"); break; case R.id.Button_res: content = new StringBuffer().append(NumCalculate(content, 0, content.length())); break; case R.id.Button_dot: // content = new StringBuffer().append(NumCalculate(content, // 0, content.length())); content.append("."); NAN = true; isDot = true; break; case R.id.Button_CLEAR: content.delete(0, content.length()); break; default: break; } et.setText(content.toString()); } private boolean NAN; private boolean isDot; }; // 编辑文本 private EditText et; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et = (EditText) findViewById(R.id.EditText01); // findViewById(R.id.Button00).setOnClickListener(button_clicker); findViewById(R.id.Button01).setOnClickListener(button_clicker); findViewById(R.id.Button02).setOnClickListener(button_clicker); findViewById(R.id.Button03).setOnClickListener(button_clicker); findViewById(R.id.Button04).setOnClickListener(button_clicker); findViewById(R.id.Button05).setOnClickListener(button_clicker); findViewById(R.id.Button06).setOnClickListener(button_clicker); findViewById(R.id.Button07).setOnClickListener(button_clicker); findViewById(R.id.Button08).setOnClickListener(button_clicker); findViewById(R.id.Button09).setOnClickListener(button_clicker); findViewById(R.id.Button_add).setOnClickListener(button_clicker); findViewById(R.id.Button_sub).setOnClickListener(button_clicker); findViewById(R.id.Button_mul).setOnClickListener(button_clicker); findViewById(R.id.Button_div).setOnClickListener(button_clicker); findViewById(R.id.Button_CLEAR).setOnClickListener(button_clicker); findViewById(R.id.Button_dot).setOnClickListener(button_clicker); findViewById(R.id.Button_res).setOnClickListener(button_clicker); } }