实现一个简易计算器

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;
}
     

猜你喜欢

转载自dingfan.iteye.com/blog/2381955