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。。。。
作者:你的雷哥
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。