Android实现简单计算器

简单实现加、减、乘、除、开根号操作。但是在开根号这一块没有处理好,只能做单独处理,不能和其他做同时运算,另外π的功能还没有实现。整体而言这个计算器还是很low的。

import android.app.Activity;
import android.content.OperationApplicationException;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button btn0;
    private Button btn1;
    private Button btn2;
    private Button btn3;
    private Button btn4;
    private Button btn5;
    private Button btn6;
    private Button btn7;
    private Button btn8;
    private Button btn9;
    private Button add;     //加
    private Button subtract;//减
    private Button multiply;//乘
    private Button divide;//除
    private Button sqrt;//开根号
    private Button PI;
    private Button point;//点
    private Button clear;//全部清除
    private Button delete;//删除
    private Button result;//等于
    private EditText editText;//显示输入数字
    private TextView textview;//显示算式
    private String operate="+";//操作符
    private double a=0.0,b=0.0;//两个需要计算的数


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取全部按钮id
        btn0=(Button)findViewById(R.id.button0);//0,4,5,6,8,9,10,12,13,14
        btn1=(Button)findViewById(R.id.button4);
        btn2=(Button)findViewById(R.id.button5);
        btn3=(Button)findViewById(R.id.button6);
        btn4=(Button)findViewById(R.id.button8);
        btn5=(Button)findViewById(R.id.button9);
        btn6=(Button)findViewById(R.id.button10);
        btn7=(Button)findViewById(R.id.button12);
        btn8=(Button)findViewById(R.id.button13);
        btn9=(Button)findViewById(R.id.button14);
        add=(Button)findViewById(R.id.button7);
        subtract=(Button)findViewById(R.id.button11);
        multiply=(Button)findViewById(R.id.button15);
        divide=(Button)findViewById(R.id.button19);
        sqrt=(Button)findViewById(R.id.button16);
        PI=(Button)findViewById(R.id.button17);//未作处理
        point=(Button)findViewById(R.id.button1);
        clear=(Button)findViewById(R.id.button2);
        result=(Button)findViewById(R.id.button3);
        delete=(Button)findViewById(R.id.button18);


        //为按钮添加监听器
        btn0.setOnClickListener(listener);
        btn1.setOnClickListener(listener);
        btn2.setOnClickListener(listener);
        btn3.setOnClickListener(listener);
        btn4.setOnClickListener(listener);
        btn5.setOnClickListener(listener);
        btn6.setOnClickListener(listener);
        btn7.setOnClickListener(listener);
        btn8.setOnClickListener(listener);
        btn9.setOnClickListener(listener);
        add.setOnClickListener(listener);
        subtract.setOnClickListener(listener);
        multiply.setOnClickListener(listener);
        divide.setOnClickListener(listener);
        sqrt.setOnClickListener(listener);
        PI.setOnClickListener(listener);//无处理
        point.setOnClickListener(listener);
        clear.setOnClickListener(listener);
        result.setOnClickListener(listener);
        delete.setOnClickListener(listener);


    }
    //设置不同按钮的id的监听器
    private OnClickListener listener = new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //获取两个框
            editText=(EditText)findViewById(R.id.editText1);
            textview=(TextView)findViewById(R.id.textView1);
            String s=editText.getText().toString();//将数据装换为字符串
            Button btn=(Button)v;
            String str=editText.getText().toString();
            try{
                switch (btn.getId()) {
                //按钮0,4,5,6,8,9,10,12,13,14为数字
                case R.id.button0://0
                    editText.setText(str + 0);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;

                case R.id.button1://小数点
                    if (str.indexOf(".")!=-1) {
                        //如果已存在小数点,不做任何操作,并提示错误
                        Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();;
                    }
                    else {
                        if (str.equals("0")) {//小数点前为0
                            editText.setText(("0"+".").toString());
                        }
                        else if(str.equals(" ")){
                            //小数点前为空,不做任何操作并提示错误
                            Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();;
                        }
                        else{
                            editText.setText(str+".");
                        }
                    }
                    break;
                case R.id.button2://AC
                    if (str.length()>0) {
                        editText.setText(" ");//输出空
                        textview.setText(" ");
                    }
                    break;      
            //判断符号进行计算      
                case R.id.button3://=取结果
                    if (operate=="+") {
                        b=Double.parseDouble(str);
                        textview.setText(a+operate+b+"=");
                        editText.setText((a+b)+"");
                    }
                    else if (operate=="-") {
                        b=Double.parseDouble(str);
                        textview.setText(a+operate+b+"=");
                        editText.setText((a-b)+"");
                    }
                    else if (operate=="×") {
                        b=Double.parseDouble(str);
                        textview.setText(a+operate+b+"=");
                        editText.setText((a*b)+"");
                    }
                    else if (operate=="÷") {
                        b=Double.parseDouble(str);
                        if (b==0) {
                            editText.setText("");
                            Toast.makeText(getApplicationContext(), "Error:除数不能为0", Toast.LENGTH_SHORT).show();;
                        }
                        else {
                            textview.setText(a+operate+b+"=");
                            editText.setText(a/b+"");
                        }
                    }

                    break;
                case R.id.button4://1
                    editText.setText(str + 1);
                    str = editText.getText().toString();
                    textview.setText(str);                
                    break;
                case R.id.button5://2
                    editText.setText(str + 2);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;  
                case R.id.button6://3
                     editText.setText(editText.getText().toString() + 3);
                     textview.setText(str); 
                    break;
                case R.id.button7://+
                    a = Double.parseDouble(str);
                    operate = "+";                    
                    textview.setText(a + operate);
                    editText.setText("");
                    break;
                case R.id.button8:
                    editText.setText(str + 4);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;
                case R.id.button9:
                    editText.setText(str + 5);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;
                case R.id.button10:
                    editText.setText(str + 6);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;
                case R.id.button11://-
                    operate="-";
                    a=Double.parseDouble(str);
                    editText.setText("");
                    textview.setText(a+operate);
                    break;
                case R.id.button12:
                    editText.setText(str + 7);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;
                case R.id.button13:
                    editText.setText(str + 8);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;  
                case R.id.button14:
                    editText.setText(str + 9);
                    str=editText.getText().toString();
                    textview.setText(str);
                    break;
                case R.id.button15://×
                    a=Double.parseDouble(str);
                    operate="×";
                    editText.setText("");
                    textview.setText(a+operate);
                    break;
                case R.id.button16://根号
                    a=Double.parseDouble(str);
                    if (a<0) {
                        Toast.makeText(getApplicationContext(), "负数没有平方根", Toast.LENGTH_LONG).show();;
                    }
                    else {
                        editText.setText(Math.sqrt(a)+"");
                        textview.setText("√"+a+"=");
                    }
                    break;
                case R.id.button17://PI
                    
                    break;
                case R.id.button18://删除单个字符
                    if (str.length()>0) {
                        editText.setText(str.substring(0, str.length()-1));//在原来字符串的基础上少显示一个字符
                    }
                    break;
                case R.id.button19://除
                    a=Double.parseDouble(str);
                    operate="÷";
                    editText.setText("");
                    textview.setText(a+operate);
                    break;

                default:
                    break;
                }

            }catch(Exception e){

            }

        }

    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

布局文件

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.calculator.MainActivity" >

    <Button
        android:id="@+id/button0"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="3dp"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:layout_marginLeft="3dp"
        android:text="0" />

    <Button
        android:id="@+id/button1"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button0"
        android:layout_alignBottom="@+id/button0"
        android:layout_toRightOf="@+id/button0"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:layout_marginLeft="3dp"
        android:text="." />

    <Button
        android:id="@+id/button2"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/button1"
        android:layout_marginLeft="3dp"
        android:layout_toRightOf="@+id/button1"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="AC" />

    <Button
        android:id="@+id/button3"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button2"
        android:layout_alignBottom="@+id/button2"
        android:layout_marginLeft="3dp"
        android:layout_toRightOf="@+id/button2"
        android:background="#d89218"
        android:padding="10dp"
        android:text="="
        android:textColor="#fff"
        android:textSize="28dp" />

    <Button
        android:id="@+id/button4"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button0"
        android:layout_marginBottom="3dp"
        android:layout_marginLeft="3dp"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="1" />

    <Button
        android:id="@+id/button5"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_alignTop="@+id/button4"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="2" />

    <Button
        android:id="@+id/button6"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_alignTop="@+id/button5"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="3" />

    <Button
        android:id="@+id/button7"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button3"
        android:layout_alignTop="@+id/button6"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="+" />

    <Button
        android:id="@+id/button8"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button4"
        android:layout_marginBottom="3dp"
        android:layout_marginLeft="3dp"
        android:background="#d89218"
        android:padding="10dp"
        android:text="4"
        android:textColor="#fff"
        android:textSize="28dp" />

    <Button
        android:id="@+id/button9"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button5"
        android:layout_alignTop="@+id/button8"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="5" />

    <Button
        android:id="@+id/button10"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button6"
        android:layout_alignTop="@+id/button9"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="6" />

    <Button
        android:id="@+id/button11"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button7"
        android:layout_alignTop="@+id/button10"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="-" />

    <Button
        android:id="@+id/button12"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button8"
        android:layout_alignLeft="@+id/button4"
        android:layout_marginBottom="3dp"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="7" />

    <Button
        android:id="@+id/button13"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button9"
        android:layout_alignTop="@+id/button12"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="8" />

    <Button
        android:id="@+id/button14"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button10"
        android:layout_alignTop="@+id/button13"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="9" />

    <Button
        android:id="@+id/button15"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button11"
        android:layout_alignTop="@+id/button14"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="×" />

    <Button
        android:id="@+id/button16"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button12"
        android:layout_alignLeft="@+id/button12"
        android:layout_marginBottom="3dp"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="√" />

    <Button
        android:id="@+id/button17"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button13"
        android:layout_alignTop="@+id/button16"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="π" />

    <Button
        android:id="@+id/button18"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button14"
        android:layout_alignTop="@+id/button17"
        android:padding="10dp"
        android:background="#d89218"
        android:textColor="#fff"
        android:textSize="28dp"
        android:text="←" />

    <Button
        android:id="@+id/button19"
        android:layout_width="65dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button18"
        android:layout_alignBottom="@+id/button18"
        android:layout_marginLeft="3dp"
        android:layout_toRightOf="@+id/button18"
        android:background="#d89218"
        android:padding="10dp"
        android:text="÷"
        android:textColor="#fff"
        android:textSize="28dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/editText1"
        android:background="#ffffff"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#808A87"
        android:textSize="50dp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_above="@+id/button16"
        android:layout_alignLeft="@+id/button16"
        android:layout_alignRight="@+id/button19"
        android:layout_below="@+id/textView1"
        android:background="#ffffff"
        android:ems="10"
        android:singleLine="true"
        android:textColor="#000000"
        android:textSize="28dp" android:inputType=""/>

</RelativeLayout>

上图
这里写图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值