前台代码如下
<?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>
后台代码如下
package com.example.a19575.jiandanjisuanqi;
import android.content.Context;
import android.content.DialogInterface;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView textView;
Button btnclear;
Button btndelete;
Button btn7;
Button btn8;
Button btn9;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btn6;
Button btn0;
Button btnjia;
Button btnjian;
Button btncheng;
Button btnchu;
Button btnpoint;
Button btnequ;
String str1="";
String str2="";
int flagdelete=0;
int flagclear=0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.whiteblack);
btnclear=(Button)findViewById(R.id.btnclear);
btndelete=(Button)findViewById(R.id.btndelete);
btn7=(Button)findViewById(R.id.btn7);
btn8=(Button)findViewById(R.id.btn8);
btn9=(Button)findViewById(R.id.btn9);
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
btn3=(Button)findViewById(R.id.btn3);
btn4=(Button)findViewById(R.id.btn4);
btn5=(Button)findViewById(R.id.btn5);
btn6=(Button)findViewById(R.id.btn6);
btn0=(Button)findViewById(R.id.btn_0);
btnjia=(Button)findViewById(R.id.btnadd);
btnjian=(Button)findViewById(R.id.btnsub);
btncheng=(Button)findViewById(R.id.btnmul);
btnchu=(Button)findViewById(R.id.btnchu);
btnpoint=(Button)findViewById(R.id.btnpoint);
btnequ=(Button)findViewById(R.id.btnequ);
}
public void onClick(View v)
{
switch (v.getId()){
case R.id.btn1:str1+="1";break;
case R.id.btn2:str1+="2";break;
case R.id.btn3:str1+="3";break;
case R.id.btn4:str1+="4";break;
case R.id.btn5:str1+="5";break;
case R.id.btn6:str1+="6";break;
case R.id.btn7:str1+="7";break;
case R.id.btn8:str1+="8";break;
case R.id.btn9:str1+="9";break;
case R.id.btn_0:str1+="0";break;
case R.id.btnadd:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false && str1.contains("/")==false)str1+="+";break;
case R.id.btnsub:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="-";break;
case R.id.btnchu:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="/";break;
case R.id.btnmul:if(str1.contains("+")==false && str1.contains("-")==false && str1.contains("*")==false&& str1.contains("/")==false)str1+="*";break;//保证只含有一个操作数
case R.id.btnpoint:str1+=".";break;
case R.id.btndelete:flagdelete=1 ;break;
case R.id.btnclear: flagclear=1;break;
case R.id.btnequ: str1+="=";break;
}
if(flagdelete==1&& str1.length()>=1){//删除一个字符
str1=str1.substring(0,str1.length()-1);
flagdelete=0;
}
if(flagclear==1){//清空
str1="";
flagclear=0;
}
if(str1.length()==1&&(str1.charAt(0)=='+' || str1.charAt(0)=='-' || str1.charAt(0)=='*' || str1.charAt(0)=='/' || str1.charAt(0)=='.' || str1.charAt(0)=='=' )){//保证第一个字符只可以是数字
str1="";
}
if(str1.length()>=2&&(str1.charAt(str1.length()-1)=='-' || str1.charAt(str1.length()-1)=='+' || str1.charAt(str1.length()-1)=='/' || str1.charAt(str1.length()-1)=='*' ||//确保只能输入一个运算符
str1.charAt(str1.length()-1)=='=' || str1.charAt(str1.length()-1)=='.')&& (str1.charAt(str1.length()-2)=='-' ||str1.charAt(str1.length()-2)=='+' ||
str1.charAt(str1.length()-2)=='*' || str1.charAt(str1.length()-2)=='/' || str1.charAt(str1.length()-2)=='=' || str1.charAt(str1.length()-2)=='.' )){
str1=str1.substring(0,str1.length()-1);
}
textView.setText(str1);
int t=0;
int flag1=0;
if(str1.length()>3&&str1.charAt(str1.length()-1)=='='){
char a[]=str1.toCharArray();
for(int i=0;i<str1.length();i++) {
if (a[i] == '+' || a[i] == '-' || a[i] == '*' || a[i] == '/') {//得到运算符的位置
t = i;
break;
}
}
double a2;
double b2;
try{
a2 = Double.parseDouble(str1.substring(0, t ));
b2 = Double.parseDouble(str1.substring(t + 1, str1.length() - 1));
if (str1.contains("+"))
str2 = String.valueOf(a2 + b2);
if (str1.contains("-"))
str2 = String.valueOf(a2 - b2);
if (str1.contains("*"))
str2 = String.valueOf(a2 * b2);
if (str1.contains("/") && b2 != 0)
str2 = String.valueOf(a2 / b2);
if (str1.contains("/") && b2 == 0)
flag1 = 1;
}catch (Exception e)
{
textView.setText("error");;
}
if(flag1==1){
textView.setText("分母不可为零");
flag1=0;
}
else
textView.setText(str1+str2);
}
}
}
截图如下
总结:该计算器是我暑假随便写的一个app,只实现了两个操作数的运算,功能简单,比较粗糙。