【Android Studio】简易计算器
简易计算器要求:
1,操作简单,易于掌握,界面简单。
2.方便进行加,减,乘,除等操作。数字保留小数点后两位。
3.包含小数点运算和输入回退功能。
4.能够进行多次叠加运算。
5.系统能够进行多次叠加运算。
6.系统可以稳定运行。
功能图如下:
逻辑流程图如下:
项目建立
项目的创建。
新建项目:项目名称设置为MainActicity。
在Activity模板中选择Blank Activity或者empty Activity模板。
其余操作不变,完成项目的创建。
计算器主界面的实现
1.设计界面布局XML文件。
在Android Studio的工程中resllayout目录下,找到activity_main.xml文件,这是用来作为主界面布局的设置文件。在该布局文件中,添加一个AbsoluteLayout(绝对布局管理器)组件,用于显示功能图标和图标上的文本,在AbsoluteLayout(绝对布局管理器)中,定义一个TextView用于显示中间数字和结果,定义17个Button用于输入0-9的数字和+、-、*、1、=、.运算符号以及“Back”输入回退按钮,并用“android:onClick”属性绑定它们的响应函数,具体代码如下。
其代码如下:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:id="@+id/txtResult"
android:layout_width="460px"
android:layout_height="80px"
android:background="#ffffffff"
android:text="0.0"
android:textSize="28sp"
android:textStyle="bold"
android:textColor="#ff333333"
android:layout_x="11dp"
android:layout_y="16dp"
android:gravity="end|right"
android:padding="2px" />
<Button android:id="@+id/btn1"
android:layout_width="80px"
android:layout_height="80px"
android:text="1"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="15dp"
android:layout_y="85dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btn2"
android:layout_width="80px"
android:layout_height="80px"
android:text="2"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="85dp"
android:layout_y="85dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btn3"
android:layout_width="80px"
android:layout_height="80px"
android:text="3"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="155dp"
android:layout_y="85dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btnAdd"
android:layout_width="80px"
android:layout_height="80px"
android:text="+"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="225dp"
android:layout_y="85dp"
android:onClick="add"/>
<Button android:id="@+id/btn4"
android:layout_width="80px"
android:layout_height="80px"
android:text="4"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="15dp"
android:layout_y="155dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btn5"
android:layout_width="80px"
android:layout_height="80px"
android:text="5"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="85dp"
android:layout_y="155dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btn6"
android:layout_width="80px"
android:layout_height="80px"
android:text="6"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="155dp"
android:layout_y="155dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btnsub"
android:layout_width="80px"
android:layout_height="80px"
android:text="-"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="225dp"
android:layout_y="155dp"
android:onClick="sub"/>
<Button android:id="@+id/btn7"
android:layout_width="80px"
android:layout_height="80px"
android:text="7"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="15dp"
android:layout_y="225dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btn8"
android:layout_width="80px"
android:layout_height="80px"
android:text="8"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="85dp"
android:layout_y="225dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btn9"
android:layout_width="80px"
android:layout_height="80px"
android:text="9"
android:textSize="20sp"
android:background="#ff5599ff"
android:textStyle="bold"
android:gravity="center"
android:layout_x="155dp"
android:layout_y="225dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btnMul"
android:layout_width="80px"
android:layout_height="80px"
android:text="*"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="225dp"
android:layout_y="225dp"
android:onClick="mul"/>
<Button android:id="@+id/btn0"
android:layout_width="130px"
android:layout_height="80px"
android:text="0"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="15dp"
android:layout_y="295dp"
android:onClick="digital_click"/>
<Button android:id="@+id/btnPoint"
android:layout_width="80px"
android:layout_height="80px"
android:text="."
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="155dp"
android:layout_y="295dp"
android:onClick="point_click"/>
<Button android:id="@+id/btnDiv"
android:layout_width="80px"
android:layout_height="80px"
android:text="/"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="225dp"
android:layout_y="295dp"
android:onClick="div"/>
<Button android:id="@+id/btndel"
android:layout_width="80px"
android:layout_height="85px"
android:text="back"
android:textSize="14sp"
android:textStyle="bold"
android:textColor="#ffff0000"
android:gravity="center"
android:layout_x="15dp"
android:layout_y="365dp"
android:onClick="del"/>
<Button android:id="@+id/btnequ"
android:layout_width="290px"
android:layout_height="80px"
android:text="="
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_x="85dp"
android:layout_y="365dp"
android:onClick="equ"/>
</AbsoluteLayout>
计算器逻辑的实现
由于程序需要使用到库函数中的模块定义,所以在编写程序时,需“import(导入)”相应的内容
来支持程序中对该类的使用。例如要使用AndroidStudio中的“按钮元件,就必须导入“Button”类,Android计算器的文件头如下:
package com.example.mainacticity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.text.NumberFormat;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
整体代码如下:
package com.example.mainacticity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.text.NumberFormat;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
double firstNum=0;//第一个输入的数据
char currentSign='+';//记录第一次输入的符号
StringBuffer currentNum=new StringBuffer();//得到textview中的数据
boolean isFirstPoint=false;//第一个数据是否是小数点
TextView txtResult;//输出结果
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtResult=(TextView) findViewById(R.id.txtResult);
}
//1.输入框恢复与初始化
public void init(){
currentNum.delete(0,currentNum.length());//设置当前textview中的值为0
isFirstPoint=false;
}
//2.数制转换函数
public double stringToDouble(){
if(currentNum.length()==0){
return 0;
}
double result=Double.parseDouble(currentNum.toString());
return result;
}
//3.计算函数
public double calcu(){
double result=0;
switch (currentSign){
case '+':
result=firstNum+stringToDouble();
break;
case '-':
result=firstNum-stringToDouble();
break;
case '*':
result=firstNum*stringToDouble();
break;
case '/':
result=firstNum/stringToDouble();
break;
default:
break;
}
//对小数点后的数据进行格式化
NumberFormat format=NumberFormat.getInstance();
format.setMaximumFractionDigits(2);
result=Double.parseDouble(format.format(result));
return result;
}
//4显示数据函数
public void display(){
txtResult.setText(currentNum.toString());
}
//5数字按钮单击响应函数
public void digital_click(View view){
Button btnDigital=(Button)view;
char text= btnDigital.getText().charAt(0);
currentNum.append(text);
display();
}
//6.加法按钮单击
public void add(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
firstNum=result;
currentSign='+';
init();
}
//7.单击减法
public void sub(View view) {
double result = calcu();
txtResult.setText(String.valueOf(result));
firstNum = result;
currentSign = '-';
init();
}
//8.单击乘法
public void mul(View view) {
double result = calcu();
txtResult.setText(String.valueOf(result));
firstNum = result;
currentSign = '*';
init();
}
//9.单击除法
public void div(View view) {
double result = calcu();
txtResult.setText(String.valueOf(result));
firstNum = result;
currentSign = '/';
init();
}
//10.处理等于函数
public void equ(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
firstNum=result;
currentSign='+';
init();
}
//11.小数点按钮单击相应函数
public void point_click(View view){
if(isFirstPoint){
return;//当第一个数据为小数点时,程序返回
}
if(currentNum.length()==0){
return;//当没有输入的数据时返回
}
Button btnPoint=(Button) view;
char text=btnPoint.getText().charAt(0);
currentNum.append(text);
isFirstPoint=true;
display();
}
//12.删除按钮单击相应
public void del(View view){
if(currentNum.length()>=1){
currentNum.delete(currentNum.length()-1,currentNum.length());
}
if(currentNum.length()==0){
init();
display();
}
txtResult.setText(currentNum);
}
}
选择合适的设备运行:
点击绿色三角run运行,短暂的加载后出现计算器界面:
进行运算:
22+23=45
可以进行简单的加减乘除运算,会自动四舍五入,保留小数点后两位数字。
完成!