actibity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/background_1" android:orientation="vertical" > <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_marginTop="40dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_height="60dp" android:editable="false"//设置为不可编辑 android:gravity="bottom|right"//光标设置到最右边 android:textSize="40sp" android:text="@string/editText" /> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="150dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp"> <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_clear" /> <Button android:id="@+id/button_div" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_div"/> <Button android:id="@+id/button_mul" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_mul"/> <Button android:id="@+id/button_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_delete"/> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button_7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_7"/> <Button android:id="@+id/button_8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_8"/> <Button android:id="@+id/button_9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_9"/> <Button android:id="@+id/button_sub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_sub"/> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button_4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_4"/> <Button android:id="@+id/button_5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_5"/> <Button android:id="@+id/button_6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_6"/> <Button android:id="@+id/button_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_add"/> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_1"/> <Button android:id="@+id/button_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_2"/> <Button android:id="@+id/button_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_3"/> <Button android:id="@+id/button_paren" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_paren"/> </TableRow> <TableRow android:id="@+id/tableRow5" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/button_0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_0"/> <Button android:id="@+id/button_point" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_point"/> <Button android:id="@+id/button_com" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_com"/> <Button android:id="@+id/button_equal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick" android:text="@string/button_equal"/> </TableRow> </TableLayout> </LinearLayout>
MainActivity.java
public class MainActivity extends Activity implements OnClickListener{ //声明变量 private EditText editText; private Button button_0; private Button button_1; private Button button_2; private Button button_3; private Button button_4; private Button button_5; private Button button_6; private Button button_7; private Button button_8; private Button button_9; private Button button_clear; private Button button_div; private Button button_mul; private Button button_delete; private Button button_sub; private Button button_add; private Button button_paren; private Button button_point; private Button button_com; private Button button_equal; private List<Item> items=new ArrayList<Item>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获得对象引用 editText=(EditText)this.findViewById(R.id.editText); button_0=(Button)this.findViewById(R.id.button_0); button_1=(Button)this.findViewById(R.id.button_1); button_2=(Button)this.findViewById(R.id.button_2); button_3=(Button)this.findViewById(R.id.button_3); button_4=(Button)this.findViewById(R.id.button_4); button_5=(Button)this.findViewById(R.id.button_5); button_6=(Button)this.findViewById(R.id.button_6); button_7=(Button)this.findViewById(R.id.button_7); button_8=(Button)this.findViewById(R.id.button_8); button_9=(Button)this.findViewById(R.id.button_9); button_clear=(Button)this.findViewById(R.id.button_clear); button_div=(Button)this.findViewById(R.id.button_div); button_mul=(Button)this.findViewById(R.id.button_mul); button_delete=(Button)this.findViewById(R.id.button_delete); button_sub=(Button)this.findViewById(R.id.button_sub); button_add=(Button)this.findViewById(R.id.button_add); button_paren=(Button)this.findViewById(R.id.button_paren); button_point=(Button)this.findViewById(R.id.button_point); button_com=(Button)this.findViewById(R.id.button_com); button_equal=(Button)this.findViewById(R.id.button_equal); //注册监听器,匿名内部类 editText.setOnClickListener(this); button_0.setOnClickListener(this); button_1.setOnClickListener(this); button_2.setOnClickListener(this); button_3.setOnClickListener(this); button_4.setOnClickListener(this); button_5.setOnClickListener(this); button_6.setOnClickListener(this); button_7.setOnClickListener(this); button_8.setOnClickListener(this); button_9.setOnClickListener(this); button_clear.setOnClickListener(this); button_div.setOnClickListener(this); button_mul.setOnClickListener(this); button_delete.setOnClickListener(this); button_sub.setOnClickListener(this); button_add.setOnClickListener(this); button_paren.setOnClickListener(this); button_point.setOnClickListener(this); button_com.setOnClickListener(this); button_equal.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub String string=editText.getText().toString(); switch(v.getId()){ case R.id.button_0: editText.append("0"); break; case R.id.button_1: editText.append("1"); break; case R.id.button_2: editText.append("2"); break; case R.id.button_3: editText.append("3"); break; case R.id.button_4: editText.append("4"); break; case R.id.button_5: editText.append("5"); break; case R.id.button_6: editText.append("6"); break; case R.id.button_7: editText.append("7"); break; case R.id.button_8: editText.append("8"); break; case R.id.button_9: editText.append("9"); break; case R.id.button_clear: editText.setText(""); items.clear(); break; case R.id.button_div: items.add(new Item(Double.parseDouble(editText.getText(). toString()),Types.NUM)); checkAndComputer(); items.add(new Item(0,Types.DIV)); editText.setText(""); break; case R.id.button_mul: items.add(new Item(Double.parseDouble(editText.getText(). toString()),Types.NUM)); checkAndComputer(); items.add(new Item(0,Types.X)); editText.setText(""); break; case R.id.button_delete: break; case R.id.button_sub: items.add(new Item(Double.parseDouble(editText.getText(). toString()),Types.NUM)); checkAndComputer(); items.add(new Item(0,Types.SUB)); editText.setText(""); break; case R.id.button_add: items.add(new Item(Double.parseDouble(editText.getText(). toString()),Types.NUM)); checkAndComputer(); items.add(new Item(0,Types.ADD)); editText.setText(""); break; case R.id.button_paren: break; case R.id.button_point: break; case R.id.button_com: break; case R.id.button_equal: items.add(new Item(Double.parseDouble(editText.getText(). toString()),Types.NUM)); checkAndComputer(); editText.setText(items.get(0).value+""); items.clear(); break; } } public void checkAndComputer(){ if(items.size()>=3){ double a=items.get(0).value; double b=items.get(2).value; int opt=items.get(1).type; items.clear(); switch(opt){ case Types.ADD: items.add(new Item(a+b,Types.NUM)); break; case Types.SUB: items.add(new Item(a-b,Types.NUM)); break; case Types.X: items.add(new Item(a*b,Types.NUM)); break; case Types.DIV: items.add(new Item(a/b,Types.NUM)); break; } } } }Item.java
public class Item { public Item(double value,int type){ this.value=value; this.type=type; } public double value=0; public int type=0; }Types.java
public class Types { public static final int ADD=1; public static final int SUB=2; public static final int X=3; public static final int DIV=4; public static final int NUM=1; }