界面代码:
activity_main界面:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/et_edit" android:layout_width="match_parent" android:layout_height="80sp" android:focusable="false" android:gravity="right" android:inputType="text" android:singleLine="true" android:textSize="40sp" /> <TableLayout android:id="@+id/tl_all" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10sp" android:collapseColumns="4" > <TableRow android:id="@+id/tr_one" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/bt_seven" android:layout_width="70dp" android:layout_height="70dp" android:text="7" /> <Button android:id="@+id/bt_eight" android:layout_width="70dp" android:layout_height="70dp" android:text="8" /> <Button android:id="@+id/bt_nine" android:layout_width="70dp" android:layout_height="70dp" android:text="9" /> <Button android:id="@+id/bt_back" android:layout_width="70dp" android:layout_height="70dp" android:text="back" /> </TableRow> <TableRow android:id="@+id/tr_two" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/bt_four" android:layout_width="70dp" android:layout_height="70dp" android:text="4" /> <Button android:id="@+id/bt_five" android:layout_width="70dp" android:layout_height="70dp" android:text="5" /> <Button android:id="@+id/bt_six" android:layout_width="70dp" android:layout_height="70dp" android:text="6" /> <Button android:id="@+id/bt_divide" android:layout_width="70dp" android:layout_height="70dp" android:text="/" /> </TableRow> <TableRow android:id="@+id/tr_three" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/bt_one" android:layout_width="70dp" android:layout_height="70dp" android:text="1" /> <Button android:id="@+id/bt_two" android:layout_width="70dp" android:layout_height="70dp" android:text="2" /> <Button android:id="@+id/bt_three" android:layout_width="70dp" android:layout_height="70dp" android:text="3" /> <Button android:id="@+id/bt_multiply" android:layout_width="70dp" android:layout_height="70dp" android:text="*" /> </TableRow> <TableRow android:id="@+id/tr_four" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/bt_zero" android:layout_width="70dp" android:layout_height="70dp" android:text="0" /> <Button android:id="@+id/bt_point" android:layout_width="70dp" android:layout_height="70dp" android:text="." /> <Button android:id="@+id/bt_add" android:layout_width="70dp" android:layout_height="70dp" android:text="+" /> <Button android:id="@+id/bt_sub" android:layout_width="70dp" android:layout_height="70dp" android:text="-" /> </TableRow> <TableRow android:id="@+id/tr_five" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/bt_equal" android:layout_width="70dp" android:layout_height="70dp" android:layout_weight="3" android:text="=" /> <Button android:id="@+id/bt_clear" android:layout_width="70dp" android:layout_height="70dp" android:text="clear" /> </TableRow> </TableLayout> </LinearLayout>
mainactivity界面:
package com.example.jsq; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private Button bt_zero; private Button bt_one; private Button bt_two; private Button bt_three; private Button bt_four; private Button bt_five; private Button bt_six; private Button bt_seven; private Button bt_eight; private Button bt_nine; private Button bt_back; private Button bt_multiply; private Button bt_divide; private Button bt_sub; private Button bt_add; private Button bt_point; private Button bt_equal; private Button bt_clear; private EditText et_edit; private StringBuffer str_display = new StringBuffer(); private boolean flag = true; private String str_oper = "+"; private String str_result = "0"; private double num1; private double num2; private boolean b_sub; private boolean b_mul; private boolean b_div; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_zero = (Button) findViewById(R.id.bt_zero); bt_one = (Button) findViewById(R.id.bt_one); bt_two = (Button) findViewById(R.id.bt_two); bt_three = (Button) findViewById(R.id.bt_three); bt_four = (Button) findViewById(R.id.bt_four); bt_five = (Button) findViewById(R.id.bt_five); bt_six = (Button) findViewById(R.id.bt_six); bt_seven = (Button) findViewById(R.id.bt_seven); bt_eight = (Button) findViewById(R.id.bt_eight); bt_nine = (Button) findViewById(R.id.bt_nine); bt_back = (Button) findViewById(R.id.bt_back); bt_multiply = (Button) findViewById(R.id.bt_multiply); bt_divide = (Button) findViewById(R.id.bt_divide); bt_sub = (Button) findViewById(R.id.bt_sub); bt_add = (Button) findViewById(R.id.bt_add); bt_point = (Button) findViewById(R.id.bt_point); bt_equal = (Button) findViewById(R.id.bt_equal); bt_clear = (Button) findViewById(R.id.bt_clear); et_edit = (EditText) findViewById(R.id.et_edit); et_edit.setText("0.0"); bt_zero.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("0"); et_edit.setText(str_display.toString()); } }); bt_one.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("1"); et_edit.setText(str_display.toString()); } }); bt_two.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("2"); et_edit.setText(str_display.toString()); } }); bt_three.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("3"); et_edit.setText(str_display.toString()); } }); bt_four.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("4"); et_edit.setText(str_display.toString()); } }); bt_five.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("5"); et_edit.setText(str_display.toString()); } }); bt_six.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("6"); et_edit.setText(str_display.toString()); } }); bt_seven.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("7"); et_edit.setText(str_display.toString()); } }); bt_eight.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("8"); et_edit.setText(str_display.toString()); } }); bt_nine.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_display.append("9"); et_edit.setText(str_display.toString()); } }); bt_point.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (flag) { str_display.append("."); et_edit.setText(str_display.toString()); flag = false; } } }); bt_back.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (str_display.length() != 0) { str_display.deleteCharAt(str_display.length() - 1); et_edit.setText(str_display.toString()); } } }); bt_add.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_oper = "+"; if (str_display.toString() != "") { num1 += Double.parseDouble(str_display.toString()); str_display = new StringBuffer(""); } // 在按了“=”而没有输入数字时,str_result不为空;在按了“=”并且输入数字后,str_result结果为空。(后面同理) if (str_result != null) { num1 = Double.parseDouble(str_result); str_result = null; } et_edit.setText(String.valueOf(num1)); flag = true; } }); bt_sub.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_oper = "-"; if (b_sub == false && str_display.toString() != "") { num1 = Double.parseDouble(str_display.toString()); et_edit.setText(String.valueOf(num1)); str_display = new StringBuffer(""); b_sub = true; } else { 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_edit.setText(String.valueOf(num1)); } flag = true; } }); bt_divide.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_oper = "/"; if (b_div == false && str_display.toString() != null) { num1 = Double.parseDouble(str_display.toString()); et_edit.setText(String.valueOf(num1)); str_display = new StringBuffer(""); b_div = true; } else { if (str_display.toString() != "") { if (Double.parseDouble(str_display.toString()) == 0) { Toast.makeText(MainActivity.this, "除数不能为零!", 0) .show(); } else { num1 /= Double.parseDouble(str_display.toString()); str_display = new StringBuffer(""); } } if (str_result != null) { num1 = Double.parseDouble(str_result); str_result = null; } et_edit.setText(String.valueOf(num1)); } flag = true; } }); bt_multiply.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_oper = "*"; if (b_mul == false && str_display.toString() != "") { num1 = Double.parseDouble(str_display.toString()); et_edit.setText(String.valueOf(num1)); str_display = new StringBuffer(""); b_mul = true; } else { 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_edit.setText(String.valueOf(num1)); } flag = true; } }); bt_equal.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (str_oper.equals("+")) { num2 = Double.parseDouble(str_display.toString()); str_result = String.valueOf(num1 + num2); et_edit.setText(str_result); str_display = new StringBuffer(""); } if (str_oper.equals("-")) { num2 = Double.parseDouble(str_display.toString()); str_result = String.valueOf(num1 - num2); et_edit.setText(str_result); str_display = new StringBuffer(""); } if (str_oper.equals("*")) { num2 = Double.parseDouble(str_display.toString()); str_result = String.valueOf(num1 * num2); et_edit.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_edit.setText(str_result); } else { Toast.makeText(MainActivity.this, "除数不能为零!", 0).show(); } str_display = new StringBuffer(""); } } }); bt_clear.setOnClickListener(new OnClickListener() { public void onClick(View v) { str_oper = "+"; str_display = new StringBuffer(""); str_result = null; num1 = 0; num2 = 0; flag = true; b_div = false; b_mul = false; b_sub = false; et_edit.setText("0.0"); } }); } }
运行截屏: