計算器Android版(源碼).doc
100%運行通過這是自己編寫的,通過eclipse運行簡易計算器Android版(源碼)這是自己整理得,歡迎大家下載說明:每完成一次計算后,需先clear 清除記憶,當(dāng)然也可以連算XML布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:/schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TableLayout android:id="+id/tableLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:collapseColumns="4" > <TableRow android:id="+id/tableRow_et" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="+id/et" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_span="4" android:focusable="false" android:singleLine="true" android:inputType="text" android:gravity="right"> </EditText> </TableRow> <TableRow android:id="+id/tableRow1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="+id/bt_7" android:layout_width="40px" android:layout_height="40px" android:text="7" /> <Button android:id="+id/bt_8" android:layout_width="40px" android:layout_height="40px" android:text="8" /> <Button android:id="+id/bt_9" android:layout_width="40px" android:layout_height="40px" android:text="9" /> <Button android:id="+id/bt_back" android:layout_width="40px" android:layout_height="40px" android:text="back" /> </TableRow> <TableRow android:id="+id/tableRow2" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="+id/bt_4" android:layout_width="40px" android:layout_height="40px" android:text="4" /> <Button android:id="+id/bt_5" android:layout_width="40px" android:layout_height="40px" android:text="5" /> <Button android:id="+id/bt_6" android:layout_width="40px" android:layout_height="40px" android:text="6" /> <Button android:id="+id/bt_divide" android:layout_width="40px" android:layout_height="40px" android:text="/" /> </TableRow> <TableRow android:id="+id/tableRow3" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="+id/bt_1" android:layout_width="40px" android:layout_height="40px" android:text="1" /> <Button android:id="+id/bt_2" android:layout_width="40px" android:layout_height="40px" android:text="2" /> <Button android:id="+id/bt_3" android:layout_width="40px" android:layout_height="40px" android:text="3" /> <Button android:id="+id/bt_multiply" android:layout_width="40px" android:layout_height="40px" android:text="*" /> </TableRow> <TableRow android:id="+id/tableRow4" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="+id/bt_0" android:layout_width="50px" android:layout_height="40px" android:text="0" /> <Button android:id="+id/bt_point" android:layout_width="50px" android:layout_height="40px" android:text="." /> <Button android:id="+id/bt_add" android:layout_width="50px" android:layout_height="40px" android:text="+" /> <Button android:id="+id/bt_sub" android:layout_width="50px" android:layout_height="40px" android:text="-" /> </TableRow> <TableRow android:id="+id/tableRow4" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="+id/bt_equal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_span="3" android:text="=" /> <Button android:id="+id/bt_clear" android:layout_width="50px" android:layout_height="40px" android:text="clear" /> </TableRow> </TableLayout></LinearLayout>源代碼:package android.sdk;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class Android_calculatorActivity extends Activityprivate Button bt_1;private Button bt_2;private Button bt_3;private Button bt_4;private Button bt_5;private Button bt_6;private Button bt_7;private Button bt_8;private Button bt_9;private Button bt_0;private Button bt_add;private Button bt_sub; / 減private Button bt_multiply; / 乘private Button bt_divide; / 除private Button bt_back;private Button bt_equal; / 等于private Button bt_point; / 點private Button bt_clear; / 清除private EditText et_play; / 顯示private String str_oper = "+" / 運算符private StringBuffer str_display = new StringBuffer(); / 顯示private String str_result; / 結(jié)果顯示private double num1;private double num2;private boolean flag = true; / 小數(shù)點個數(shù)開關(guān)控制;private boolean b_sub, b_mul, b_div; / 運算符開關(guān)控制Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);bt_0 = (Button) findViewById(R.id.bt_0);bt_1 = (Button) findViewById(R.id.bt_1);bt_2 = (Button) findViewById(R.id.bt_2);bt_3 = (Button) findViewById(R.id.bt_3);bt_4 = (Button) findViewById(R.id.bt_4);bt_5 = (Button) findViewById(R.id.bt_5);bt_6 = (Button) findViewById(R.id.bt_6);bt_7 = (Button) findViewById(R.id.bt_7);bt_8 = (Button) findViewById(R.id.bt_8);bt_9 = (Button) findViewById(R.id.bt_9);bt_add = (Button) findViewById(R.id.bt_add);bt_sub = (Button) findViewById(R.id.bt_sub);bt_multiply = (Button) findViewById(R.id.bt_multiply);bt_divide = (Button) findViewById(R.id.bt_divide);bt_back = (Button) findViewById(R.id.bt_back);bt_equal = (Button) findViewById(R.id.bt_equal);bt_point = (Button) findViewById(R.id.bt_point);bt_clear = (Button) findViewById(R.id.bt_clear);et_play = (EditText) findViewById(R.id.et);et_play.setText("0.0");bt_0.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("0");et_play.setText(str_display.toString(););bt_1.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("1");et_play.setText(str_display.toString(););bt_2.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("2");et_play.setText(str_display.toString(););bt_3.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("3");et_play.setText(str_display.toString(););bt_4.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("4");et_play.setText(str_display.toString(););bt_5.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("5");et_play.setText(str_display.toString(););bt_6.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("6");et_play.setText(str_display.toString(););bt_7.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("7");et_play.setText(str_display.toString(););bt_8.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("8");et_play.setText(str_display.toString(););bt_9.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_display.append("9");et_play.setText(str_display.toString(););bt_point.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)if (flag)str_display.append(".");flag = false;);bt_back.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)if (str_display.length() != 0)str_display.deleteCharAt(str_display.length() - 1);et_play.setText(str_display.toString(););bt_add.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_oper = "+"if (!(str_display.toString() = "")num1 += Double.parseDouble(str_display.toString();str_display = new StringBuffer("");if (!(str_result = null)num1 = Double.parseDouble(str_result);str_result = null;et_play.setText(String.valueOf(num1);flag = true;);bt_sub.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_oper = "-"if (!b_sub && !(str_display.toString() = "")num1 = Double.parseDouble(str_display.toString();et_play.setText(String.valueOf(num1);str_display = new StringBuffer("");b_sub = true; elseif (!(str_display.toString() = "")num1 -= Double.parseDouble(str_display.toString();str_display = new StringBuffer("");if (!(str_result = null)num1 = Double.parseDouble(str_result);str_result = null;et_play.setText(String.valueOf(num1);flag = true;);bt_multiply.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_oper = "*"if (!b_mul && !(str_display.toString() = "")num1 = Double.parseDouble(str_display.toString();et_play.setText(String.valueOf(num1);str_display = new StringBuffer("");b_mul = true; elseif (!(str_display.toString() = "")num1 *= Double.parseDouble(str_display.toString();str_display = new StringBuffer("");if (!(str_result = null)num1 = Double.parseDouble(str_result);str_result = null;et_play.setText(String.valueOf(num1);flag = true;);bt_divide.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_oper = "/"if (!b_div && !(str_display.toString() = "")num1 = Double.parseDouble(str_display.toString();et_play.setText(String.valueOf(num1);str_display = new StringBuffer("");b_div = true; elseif (!(str_display.toString() = "")if (Double.parseDouble(str_display.toString() = 0)Toast.makeText(Android_calculatorActivity.this,"除數(shù)不能為0!", Toast.LENGTH_LONG).show(); elsenum1 /= Double.parseDouble(str_display.toString();str_display = new StringBuffer("");if (!(str_result = null)num1 = Double.parseDouble(str_result);str_result = null;et_play.setText(String.valueOf(num1);flag = true;);bt_clear.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)str_oper = "+"str_display = new StringBuffer("");str_result = null;num1 = 0;num2 = 0;flag = true;b_sub = false;b_mul = false;b_div = false;et_play.setText("0.0"););bt_equal.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)if (str_oper.equals("+")num2 = Double.parseDouble(str_display.toString();str_result = String.valueOf(num1 + num2);et_play.setText(str_result);str_display = new StringBuffer("");if (str_oper.equals("-")num2 = Double.parseDouble(str_display.toString();str_result = String.valueOf(num1 - num2);et_play.setText(str_result);str_display = new StringBuffer("");if (str_oper.equals("*")num2 = Double.parseDouble(str_display.toString();str_result = String.valueOf(num1 * num2);et_play.setText(str_result);str_display = new StringBuffer("");if (str_oper.equals("/")num2 = Double.parseDouble(str_display.toString();if (!(num2 = 0)str_result = String.valueOf(num1 / num2);et_play.setText(str_result); elseToast.makeText(Android_calculatorActivity.this,"除數(shù)不能為0!", Toast.LENGTH_LONG).show();str_display = new StringBuffer(""););