【Android Studio】简易计算器

2024-05-13 1291阅读

简易计算器要求:

1,操作简单,易于掌握,界面简单。

2.方便进行加,减,乘,除等操作。数字保留小数点后两位。

3.包含小数点运算和输入回退功能。

4.能够进行多次叠加运算。

5.系统能够进行多次叠加运算。

6.系统可以稳定运行。

功能图如下:

【Android Studio】简易计算器

逻辑流程图如下:

【Android Studio】简易计算器

项目建立

项目的创建。

新建项目:项目名称设置为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”属性绑定它们的响应函数,具体代码如下。

其代码如下:


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

计算器逻辑的实现

由于程序需要使用到库函数中的模块定义,所以在编写程序时,需“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);
    }
}

选择合适的设备运行:

【Android Studio】简易计算器

点击绿色三角run运行,短暂的加载后出现计算器界面:

【Android Studio】简易计算器

进行运算:

【Android Studio】简易计算器

22+23=45

【Android Studio】简易计算器

可以进行简单的加减乘除运算,会自动四舍五入,保留小数点后两位数字。

完成!

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]