简易计算器要求:
1,操作简单,易于掌握,界面简单。
2.方便进行加,减,乘,除等操作。数字保留小数点后两位。
3.包含小数点运算和输入回退功能。
4.能够进行多次叠加运算。
5.系统能够进行多次叠加运算。
6.系统可以稳定运行。
功能图如下:
逻辑流程图如下:
项目建立
项目的创建。
新建项目:项目名称设置为MainActicity。
在Activity模板中选择Blank Activity或者empty Activity模板。
其余操作不变,完成项目的创建。
计算器主界面的实现
设计界面布局XML文件。
在Android Studio的工程中resllayout\目录下,找到activity_main.xml文件,这是用来作为主界面布局的设置文件。在该布局文件中,添加一个AbsoluteLayout(绝对布局管理器)组件,用于显示功能图标和图标上的文本,在AbsoluteLayout(绝对布局管理器)中,定义一个TextView用于显示中间数字和结果,定义17个Button用于输入0-9的数字和+、-、*、1、=、.运算符号以及“Back”输入回退按钮,并用“android:onClick”属性绑定它们的响应函数,具体代码如下。
其代码如下:
<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
可以进行简单的加减乘除运算,会自动四舍五入,保留小数点后两位数字。
完成!