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