zoukankan      html  css  js  c++  java
  • 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。。。。

    
    
  • 相关阅读:
    深入理解JavaScript系列(24):JavaScript与DOM(下)
    大叔手记(20):ASP.NET MVC中使用jQuery时的浏览器缓存问题
    深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP
    深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP
    深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手
    深入理解JavaScript系列(25):设计模式之单例模式
    深入理解JavaScript系列(26):设计模式之构造函数模式
    ASP.NET GridView中使用搜索框(SearchableGridView)
    WPF中的图表设计器 – 1
    使用URL Routing进行数据分页
  • 原文地址:https://www.cnblogs.com/henuliulei/p/9318325.html
Copyright © 2011-2022 走看看