android实现简单计算器

前台代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/whiteblack"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:height="150dp"
        android:textSize="30sp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="*" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btnclear"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:onClick="onClick"
                android:text="CLEAR" />

            <Button
                android:id="@+id/btndelete"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:onClick="onClick"
                android:text="" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="7" />

            <Button
                android:id="@+id/btn8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="8" />

            <Button
                android:id="@+id/btn9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="9" />

            <Button
                android:id="@+id/btnchu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="÷" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="4" />

            <Button
                android:id="@+id/btn5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="5" />

            <Button
                android:id="@+id/btn6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="6" />

            <Button
                android:id="@+id/btnmul"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="×" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="1" />

            <Button
                android:id="@+id/btn2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="2" />

            <Button
                android:id="@+id/btn3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="3" />

            <Button
                android:id="@+id/btnsub"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="-" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btnpoint"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="." />

            <Button
                android:id="@+id/btn_0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="0" />

            <Button
                android:id="@+id/btnequ"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="=" />

            <Button
                android:id="@+id/btnadd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="+" />
        </TableRow>
    </TableLayout>



</LinearLayout> 

后台代码如下

  1 package com.example.a19575.jiandanjisuanqi;
  2 
  3 import android.content.Context;
  4 import android.content.DialogInterface;
  5 import android.support.annotation.Nullable;
  6 import android.support.v7.app.AppCompatActivity;
  7 import android.os.Bundle;
  8 
  9 import android.app.Activity;
 10 import android.os.Bundle;
 11 import android.view.View;
 12 import android.widget.Button;
 13 import android.widget.TextView;
 14 import android.widget.Toast;
 15 
 16 public class MainActivity extends AppCompatActivity {
 17     TextView textView;
 18     Button btnclear;
 19     Button btndelete;
 20     Button btn7;
 21     Button btn8;
 22     Button btn9;
 23     Button btn1;
 24     Button btn2;
 25     Button btn3;
 26     Button btn4;
 27     Button btn5;
 28     Button btn6;
 29     Button btn0;
 30     Button btnjia;
 31     Button btnjian;
 32     Button btncheng;
 33     Button btnchu;
 34     Button btnpoint;
 35     Button btnequ;
 36     String str1="";
 37     String str2="";
 38     int flagdelete=0;
 39     int flagclear=0;
 40     @Override
 41     protected void onCreate(@Nullable Bundle savedInstanceState) {
 42 
 43         super.onCreate(savedInstanceState);
 44         setContentView(R.layout.activity_main);
 45          textView=(TextView)findViewById(R.id.whiteblack);
 46         btnclear=(Button)findViewById(R.id.btnclear);
 47          btndelete=(Button)findViewById(R.id.btndelete);
 48          btn7=(Button)findViewById(R.id.btn7);
 49          btn8=(Button)findViewById(R.id.btn8);
 50          btn9=(Button)findViewById(R.id.btn9);
 51          btn1=(Button)findViewById(R.id.btn1);
 52          btn2=(Button)findViewById(R.id.btn2);
 53          btn3=(Button)findViewById(R.id.btn3);
 54          btn4=(Button)findViewById(R.id.btn4);
 55          btn5=(Button)findViewById(R.id.btn5);
 56          btn6=(Button)findViewById(R.id.btn6);
 57          btn0=(Button)findViewById(R.id.btn_0);
 58          btnjia=(Button)findViewById(R.id.btnadd);
 59          btnjian=(Button)findViewById(R.id.btnsub);
 60          btncheng=(Button)findViewById(R.id.btnmul);
 61          btnchu=(Button)findViewById(R.id.btnchu);
 62          btnpoint=(Button)findViewById(R.id.btnpoint);
 63          btnequ=(Button)findViewById(R.id.btnequ);
 64 
 65     }
 66 
 67     public void onClick(View v)
 68     {
 69        switch (v.getId()){
 70            case R.id.btn1:str1+="1";break;
 71            case R.id.btn2:str1+="2";break;
 72            case R.id.btn3:str1+="3";break;
 73            case R.id.btn4:str1+="4";break;
 74            case R.id.btn5:str1+="5";break;
 75            case R.id.btn6:str1+="6";break;
 76            case R.id.btn7:str1+="7";break;
 77            case R.id.btn8:str1+="8";break;
 78            case R.id.btn9:str1+="9";break;
 79            case R.id.btn_0:str1+="0";break;
 80            case R.id.btnadd:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false && str1.contains("/")==false)str1+="+";break;
 81            case R.id.btnsub:if(str1.contains("+")==false && str1.contains("-")==false  && str1.contains("*")==false&& str1.contains("/")==false)str1+="-";break;
 82            case R.id.btnchu:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="/";break;
 83            case R.id.btnmul:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="*";break;//保证只含有一个操作数
 84            case R.id.btnpoint:str1+=".";break;
 85            case R.id.btndelete:flagdelete=1 ;break;
 86            case R.id.btnclear: flagclear=1;break;
 87            case R.id.btnequ: str1+="=";break;
 88        }
 89        if(flagdelete==1&& str1.length()>=1){//删除一个字符
 90            str1=str1.substring(0,str1.length()-1);
 91            flagdelete=0;
 92        }
 93        if(flagclear==1){//清空
 94            str1="";
 95            flagclear=0;
 96        }
 97       if(str1.length()==1&&(str1.charAt(0)=='+' || str1.charAt(0)=='-' || str1.charAt(0)=='*' || str1.charAt(0)=='/' || str1.charAt(0)=='.' || str1.charAt(0)=='=' )){//保证第一个字符只可以是数字
 98            str1="";
 99       }
100        if(str1.length()>=2&&(str1.charAt(str1.length()-1)=='-' || str1.charAt(str1.length()-1)=='+' || str1.charAt(str1.length()-1)=='/' || str1.charAt(str1.length()-1)=='*' ||//确保只能输入一个运算符
101                str1.charAt(str1.length()-1)=='=' || str1.charAt(str1.length()-1)=='.')&& (str1.charAt(str1.length()-2)=='-' ||str1.charAt(str1.length()-2)=='+' ||
102                str1.charAt(str1.length()-2)=='*' || str1.charAt(str1.length()-2)=='/' || str1.charAt(str1.length()-2)=='=' || str1.charAt(str1.length()-2)=='.' )){
103            str1=str1.substring(0,str1.length()-1);
104        }
105        textView.setText(str1);
106        int t=0;
107        int flag1=0;
108        if(str1.length()>3&&str1.charAt(str1.length()-1)=='='){
109            char a[]=str1.toCharArray();
110            for(int i=0;i<str1.length();i++) {
111                if (a[i] == '+' || a[i] == '-' || a[i] == '*' || a[i] == '/') {//得到运算符的位置
112                    t = i;
113                    break;
114                }
115            }
116            double a2;
117            double b2;
118               try{
119                   a2 = Double.parseDouble(str1.substring(0, t ));
120                       b2 = Double.parseDouble(str1.substring(t + 1, str1.length() - 1));
121                       if (str1.contains("+"))
122                           str2 = String.valueOf(a2 + b2);
123                       if (str1.contains("-"))
124                           str2 = String.valueOf(a2 - b2);
125                       if (str1.contains("*"))
126                           str2 = String.valueOf(a2 * b2);
127                       if (str1.contains("/") && b2 != 0)
128                           str2 = String.valueOf(a2 / b2);
129                       if (str1.contains("/") && b2 == 0)
130                           flag1 = 1;
131               }catch (Exception e)
132               {
133                   textView.setText("error");;
134               }
135 
136 
137 
138                if(flag1==1){
139                textView.setText("分母不可为零");
140                flag1=0;
141            }
142            else
143            textView.setText(str1+str2);
144        }
145 
146     }
147 }

截图如下

总结:该计算器是我暑假随便写的一个app,只实现了两个操作数的运算,功能简单,比较粗糙,实现了对一些常见异常的捕获,第一次写博客,请包涵QAQ。。。。


原文地址:https://www.cnblogs.com/henuliulei/p/9318325.html