文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Android Studio】简易计算器

2023-09-21 11:15

关注

简易计算器要求:

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
在这里插入图片描述
可以进行简单的加减乘除运算,会自动四舍五入,保留小数点后两位数字。
完成!

来源地址:https://blog.csdn.net/gelly_/article/details/131737149

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯