Android-简易计算器

布局(activity_main.xml)

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/GridLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:columnCount="4"
            android:orientation="horizontal"
            android:rowCount="6" >

    <EditText
            android:id="@+id/editText"
            android:layout_columnSpan="4"
            android:layout_gravity="fill"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:text="0"
            android:textSize="50sp" />



    <Button
            android:id="@+id/clear"
            android:layout_columnSpan="1"
            android:layout_gravity="fill"
            android:text="清空"
            android:textColor="#FF4500"

    />

    <Button
            android:id="@+id/back"
            android:layout_columnSpan="1"
            android:layout_gravity="fill"
            android:text="回退"
            android:textColor="#FF4500"

    />

    <Button
            android:id="@+id/per"
            android:text="%"
            android:textColor="#FF4500"

    />

    <Button
            android:id="@+id/div"
            android:text="÷"
            android:textColor="#FF4500"

    />

    <Button
            android:id="@+id/b7"
            android:text="7"

    />

    <Button
            android:id="@+id/b8"
            android:text="8"
    />

    <Button
            android:id="@+id/b9"
            android:text="9"
    />

    <Button
            android:id="@+id/mul"
            android:text="×"
            android:textColor="#FF4500"
    />

    <Button
            android:id="@+id/b4"
            android:text="4"
    />

    <Button
            android:id="@+id/b5"
            android:text="5"
    />

    <Button
            android:id="@+id/b6"
            android:text="6"
    />

    <Button
            android:id="@+id/sub"
            android:text="-"
            android:textColor="#FF4500"

    />

    <Button
            android:id="@+id/b1"
            android:text="1"
    />

    <Button
            android:id="@+id/b2"
            android:text="2"
    />

    <Button
            android:id="@+id/b3"
            android:text="3"
    />

    <Button
            android:id="@+id/plus"
            android:layout_width="wrap_content"
            android:text="+"
            android:textColor="#FF4500"

    />

    <Button
            android:id="@+id/b00"
            android:text="00"
    />
    <Button
            android:id="@+id/b0"
            android:text="0"
    />
    <Button
            android:id="@+id/dot"
            android:text="."
    />

    <Button
            android:id="@+id/equ"
            android:text="="
            android:background="#008B8B"
    />

</GridLayout>

响应及计算(MainActivity)

package com.mylayout;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editText;

    //数字0-9
    private Button b1;
    private Button b2;
    private Button b3;
    private Button b4;
    private Button b5;
    private Button b6;
    private Button b7;
    private Button b8;
    private Button b9;
    private Button b0;
    private Button b00;

    //运算符
    private  Button per;
    private  Button add;// +
    private  Button sub;  // -
    private  Button mul;  // *
    private  Button div;  // /
    private  Button dot;  //小数点
    private  Button equ;  // =
    
    private boolean back; //退格

    private boolean clear_bool= true;//清空
    private boolean dot_flag1 = true;
    private boolean dot_flag2 = true;

    @Override
    public void onClick(View view) {

        String input = editText.getText().toString();
        switch (view.getId()){

            case R.id.b0:
            case R.id.b1:
            case R.id.b2:
            case R.id.b3:
            case R.id.b4:
            case R.id.b5:
            case R.id.b6:
            case R.id.b7:
            case R.id.b8:
            case R.id.b9:
            case R.id.b00:
                 if(dot_flag1)dot_flag2 = true;
                 if(clear_bool)
                 {
                     clear_bool = false;
                     editText.setText(""+((Button)view).getText());
                 }
                 else
                 {
                     editText.setText(input + ((Button)view).getText());//结果集就为本身
                 }
                break;
            case R.id.dot:
                  if(dot_flag1&&dot_flag2)
                  {
                      dot_flag1 = false;
                      dot_flag2 = false;
                      editText.setText(input + ((Button)view).getText());
                  }
                  break;
            case R.id.per:
            case R.id.plus:
            case R.id.sub:
            case R.id.mul:
            case R.id.div:
                dot_flag1 = true;
                if(clear_bool)
                {
                    clear_bool = false;
                    input = "";
                    editText.setText("");
                }
                editText.setText(input + ((Button)view).getText()+" ");
                break;
            case R.id.back:   //退格
                if(input != null || !input.equals("")) {
                   if(input.length()>1) {
                       editText.setText(input.substring(0, input.length() - 1));//
                   }
                   else{
                       clear_bool =true;
                       editText.setText("0");
                   }


                }
                break;
            case R.id.clear: //清空
                editText.setText("0");
                clear_bool = true;
                break;
            case R.id.equ:
                calculation();
                break;
        }


    }

    //计算结果
    private void calculation() {
        String s1 = editText.getText().toString();         //获取字符串
        if (s1 == null){
            return;
        }
        boolean flag = false;
        if(s1.charAt(0)=='-')
        {
            s1 = s1.substring(1);
            flag = true;
        }
        String []num = s1.split("[-÷×+]");     //分割字符串获得各个数字
        double []n = new double[num.length];
        for(int i=0;i<num.length;i++)        //字符串转数字
        {
            if(num[i].equals(""))continue;
                //百分号
            else if(num[i].contains("%")) n[i] = Double.parseDouble(num[i].replace("%",""))/100;
                //开根 
//            else if(num[i].contains("√")) n[i] = Math.sqrt(Double.parseDouble(num[i].replace("√", "")));
            else n[i] = Double.parseDouble(num[i]);
        }

        if(flag) n[0] -= n[0]*2;          //负数情况
        char[] sy = s1.replaceAll("[^-÷×+]","").toCharArray();  //获得运算符
        int slen = sy.length;
        if(sy.length == num.length)slen--;
        char c = '+';
        double result = n[0] ;                                                               //结果
        if(n.length>1)
        {
            for (int j = 0; j < slen; j++)             //先算乘除
            {
                if (sy[j] == '×')
                {
                    n[j + 1] = n[j] * n[j + 1];
                    n[j] = 0;
                    if (c == '+') sy[j] = '+';  //判断乘除的前一个运算符是什么
                    else sy[j] = '-';
                }
                else if (sy[j] == '÷')
                {
                    if (n[j + 1] != 0) n[j + 1] = n[j] / n[j + 1];
                    else n[j + 1] = 0;
                    n[j] = 0;
                    if (c == '+') sy[j] = '+';
                    else sy[j] = '-';
                } else
                    c = sy[j];
            }
            result = n[0];
            for (int j = 0; j < slen; j++) {               //求和
                if (sy[j] == '+') result += n[j + 1];
                if (sy[j] == '-') result -= n[j + 1];
            }
        }
        if((int)result == result )editText.setText((int)result+"");                            //显示
        else
        {	//控制输出小数点后6位
            result = Double.parseDouble(String.format("%.6f", result));
            editText.setText(result+"");
        }


    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取id
        View b1 = findViewById(R.id.b1);
        View b2 = findViewById(R.id.b2);
        View b3= findViewById(R.id.b3);
        View b4 = findViewById(R.id.b4);
        View b5 = findViewById(R.id.b5);
        View b6 = findViewById(R.id.b6);
        View b7 = findViewById(R.id.b7);
        View b8 = findViewById(R.id.b8);
        View b9 = findViewById(R.id.b9);
        View b0 = findViewById(R.id.b0);
        View b00 = findViewById(R.id.b00);

        //运算符

        View plus = findViewById(R.id.plus);// +
        View sub = findViewById(R.id.sub);// -
        View mul = findViewById(R.id.mul);// *
        View per = findViewById(R.id.per); // %
        View div = findViewById(R.id.div); // /
        View dot = findViewById(R.id.dot);//小数点
        View equ = findViewById(R.id.equ);//=
        View clear = findViewById(R.id.clear);//清空
        View back = findViewById(R.id.back); //回退

        editText = (EditText) findViewById(R.id.editText);//结果集

        //添加监听事件
        b0.setOnClickListener(this);
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        b3.setOnClickListener(this);
        b4.setOnClickListener(this);
        b5.setOnClickListener(this);
        b6.setOnClickListener(this);
        b7.setOnClickListener(this);
        b8.setOnClickListener(this);
        b9.setOnClickListener(this);
        b00.setOnClickListener(this);

        per.setOnClickListener(this);
        plus.setOnClickListener(this);
        sub.setOnClickListener(this);
        mul.setOnClickListener(this);
        div.setOnClickListener(this);
        dot.setOnClickListener(this);
        equ.setOnClickListener(this);
        clear.setOnClickListener(this);
        back.setOnClickListener(this);

    }



}
 

测试

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于安卓java开发简单计算器小程序。 package com.he; import android.app.Activity; import android.os.Bundle; import android.text.InputType; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class CalculatorActivity extends Activity { //加plus 减subtract 乘multiply 除divide private EditText etResult; private Button btPlus; private Button btSub; private Button btMultiply; private Button btDivide; private Button btDelete; private Button btCe; private Button btPoint; private Button btDeng; private Button bt0; private Button bt1; private Button bt2; private Button bt3; private Button bt4; private Button bt5; private Button bt6; private Button bt7; private Button bt8; private Button bt9; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); etResult=(EditText)findViewById(R.id.etResult); btPlus=(Button)findViewById(R.id.btPlus); btSub=(Button)findViewById(R.id.btSubtract); btMultiply=(Button)findViewById(R.id.btMultiply); btDivide=(Button)findViewById(R.id.btDivide); btDelete=(Button)findViewById(R.id.btDelete); btDeng=(Button)findViewById(R.id.btDeng); btPoint=(Button)findViewById(R.id.btPoint); btCe=(Button)findViewById(R.id.btCe); bt0=(Button)findViewById(R.id.bt0); bt1=(Button)findViewById(R.id.bt1); bt2=(Button)findViewById(R.id.bt2); bt3=(Button)findViewById(R.id.bt3); bt4=(Button)findViewById(R.id.bt4); bt5=(Button)findViewById(R.id.bt5); bt6=(Button)findViewById(R.id.bt6); bt7=(Button)findViewById(R.id.bt7); bt8=(Button)findViewById(R.id.bt8); bt9=(Button)findViewById(R.id.bt9); etResult.setInputType(InputType.TYPE_NULL); /* * .按钮 */ btPoint.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); if(str1.equals("")){ etResult.setText(""); }else{ etResult.setText(str1+btPoint.getText().toString()); } } }); /* * 0---------9的数字按钮 */ bt0.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); if(str1.equals("")){ etResult.setText(""); }else{ etResult.setText(str1+bt0.getText().toString()); } } }); bt1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt1.getText().toString()); } }); bt2.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt2.getText().toString()); } }); bt3.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt3.getText().toString()); } }); bt4.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt4.getText().toString()); } }); bt5.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt5.getText().toString()); } }); bt6.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt6.getText().toString()); } }); bt7.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt7.getText().toString()); } }); bt8.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt8.getText().toString()); } }); bt9.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); etResult.setText(str1+bt9.getText().toString()); } }); /* * ce键 清空 */ btCe.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { etResult.setText(""); } }); /* * Delete键 */ btDelete.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str=etResult.getText().toString(); if(str.length()==0){ etResult.setText(""); }else{ etResult.setText(str.subSequence(0, str.length()-1)); } } }); /* * + 、-、 * 、/四个按钮 */ btPlus.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { final String str=etResult.getText().toString(); if(str.equals("")){ etResult.setText(""); }else{ etResult.setText(str+btPlus.getText().toString()); } } }); btSub.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str=etResult.getText().toString(); if(str.equals("")){ etResult.setText(""); }else{ etResult.setText(str+btSub.getText().toString()); } } }); btMultiply.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str=etResult.getText().toString(); if(str.equals("")){ etResult.setText(""); }else{ etResult.setText(str+btMultiply.getText().toString()); } } }); btDivide.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str=etResult.getText().toString(); if(str.equals("")){ etResult.setText(""); }else{ etResult.setText(str+btDivide.getText().toString()); } } }); /* * = 按钮 */ btDeng.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str=etResult.getText().toString(); /*if(str.charAt(str.length()-1)=='0' && str.charAt(str.length()-2)=='/'){ Toast.makeText(CalculatorActivity.this, "除数不能为0!", Toast.LENGTH_LONG).show(); }else{ }*/ if(str.indexOf('+')>0){ Double num1=Double.parseDouble(str.substring(0, str.indexOf('+'))); Double num2=Double.parseDouble(str.substring(str.indexOf('+')+1)); Double result=num1+num2; etResult.setText(result.toString()); } else if(str.indexOf('-')>0){ Double num1=Double.parseDouble(str.substring(0, str.indexOf('-'))); Double num2=Double.parseDouble(str.substring(str.indexOf('-')+1)); Double result=num1-num2; etResult.setText(result.toString()); } else if(str.indexOf('*')>0){ Double num1=Double.parseDouble(str.substring(0, str.indexOf('*'))); Double num2=Double.parseDouble(str.substring(str.indexOf('*')+1)); Double result=num1*num2; etResult.setText(result.toString()); }else if(str.indexOf('/')>0){ Double num1=Double.parseDouble(str.substring(0, str.indexOf('/'))); Double num2=Double.parseDouble(str.substring(str.indexOf('/')+1)); if(num2==0){ Toast.makeText(CalculatorActivity.this, "除数不能为0!", Toast.LENGTH_LONG).show(); }else{ Double result=num1/num2; etResult.setText(result.toString()); } } } }); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值