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

<think>好的,用户想在Android Studio中创建一个简易计算器应用,并需要示例代码和教程。首先,我需要回顾一下相关的知识,确保步骤正确。 首先,创建新项目是第一步。用户需要选择Empty Activity,这样方便从头开始构建界面。项目名称和包名要设置正确,语言选Java或Kotlin,这里用户可能更熟悉Java,所以示例代码用Java编写。 接下来是设计用户界面。计算器通常有显示结果的TextView和数字按钮、操作符按钮。使用GridLayout来排列按钮比较方便,可以4列布局。每个按钮的onClick属性需要对应方法,比如numClick处理数字输入,opClick处理运算符,equalsClick处理计算。 然后是逻辑代码的实现。在MainActivity中,需要声明变量来跟踪当前输入的数字、前一个操作数和当前运算符。初始化时,currentNumber初始化为空,previousNumber为0,currentOperator为空。处理数字输入时,将按钮的文本追加到currentNumber并更新显示。处理运算符时,如果有前一个操作数,先进行计算,再保存当前运算符。等号按钮触发计算,调用calculate方法,根据运算符执行相应计算,并处理除以零的情况。最后,clear方法重置所有变量。 测试和运行部分,用户需要连接设备或模拟器,构建并运行应用,确保按钮点击和计算逻辑正确。可能需要注意一些边界情况,比如连续运算、错误处理等。 用户提供的引用中提到了设计用户界面的步骤和需要constructor的问题,但示例代码中可能不需要自定义View,所以可以忽略这部分。引用中的链接可能提供完整代码,但用户可能需要更简明的步骤,所以综合引用内容,整理出关键步骤。 用户可能遇到的问题包括布局不正确、按钮点击无响应或计算逻辑错误。需要检查XML中的id是否正确,onClick方法是否在Activity中正确声明,以及运算符处理是否正确。此外,小数点和清除功能是否需要添加,但用户的问题可能只需要基本功能,所以示例中可能未包含,但可以建议扩展。 最后,生成相关问题,帮助用户进一步学习,比如优化UI、处理更多运算或添加高级功能,参考引用中的内容,确保问题相关且有价值。</think>### 在 Android Studio 中创建简易计算器的步骤 #### 步骤一:创建新项目 1. 打开Android Studio,选择 **File → New → New Project** 2. 选择 **Empty Activity** 模板 3. 设置项目名称(如`SimpleCalculator`)、包名和保存路径 4. 选择编程语言为 **Java**,最低API级别根据需求设置(建议API 21+) 5. 点击 **Finish** 完成创建[^2][^4] --- #### 步骤二:设计用户界面 在`activity_main.xml`中编写以下布局代码,使用`LinearLayout`和`GridLayout`实现计算器按钮排列: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 结果显示区域 --> <TextView android:id="@+id/tv_result" android:layout_width="match_parent" android:layout_height="100dp" android:textSize="30sp" android:gravity="end|center_vertical"/> <!-- 按钮区域 --> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="4"> <!-- 数字及操作符按钮 --> <Button android:text="7" android:onClick="numClick"/> <Button android:text="8" android:onClick="numClick"/> <Button android:text="9" android:onClick="numClick"/> <Button android:text="÷" android:onClick="opClick"/> <Button android:text="4" android:onClick="numClick"/> <Button android:text="5" android:onClick="numClick"/> <Button android:text="6" android:onClick="numClick"/> <Button android:text="×" android:onClick="opClick"/> <Button android:text="1" android:onClick="numClick"/> <Button android:text="2" android:onClick="numClick"/> <Button android:text="3" android:onClick="numClick"/> <Button android:text="-" android:onClick="opClick"/> <Button android:text="C" android:onClick="clear"/> <Button android:text="0" android:onClick="numClick"/> <Button android:text="=" android:onClick="equalsClick"/> <Button android:text="+" android:onClick="opClick"/> </GridLayout> </LinearLayout> ``` [^3][^4] --- #### 步骤三:实现逻辑代码 在`MainActivity.java`中添加核心计算逻辑: ```java public class MainActivity extends AppCompatActivity { private TextView tvResult; private String currentNumber = ""; private double previousNumber = 0; private String currentOperator = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvResult = findViewById(R.id.tv_result); } // 数字按钮点击事件 public void numClick(View view) { Button btn = (Button) view; currentNumber += btn.getText().toString(); updateDisplay(); } // 运算符按钮点击事件 public void opClick(View view) { Button btn = (Button) view; if (!currentNumber.isEmpty()) { previousNumber = Double.parseDouble(currentNumber); currentOperator = btn.getText().toString(); currentNumber = ""; } } // 等号按钮点击事件 public void equalsClick(View view) { if (!currentNumber.isEmpty() && !currentOperator.isEmpty()) { double current = Double.parseDouble(currentNumber); switch (currentOperator) { case "+": previousNumber += current; break; case "-": previousNumber -= current; break; case "×": previousNumber *= current; break; case "÷": if (current != 0) previousNumber /= current; else tvResult.setText("Error"); break; } currentNumber = String.valueOf(previousNumber); updateDisplay(); currentOperator = ""; } } // 清除按钮 public void clear(View view) { currentNumber = ""; previousNumber = 0; currentOperator = ""; updateDisplay(); } private void updateDisplay() { tvResult.setText(currentNumber.isEmpty() ? "0" : currentNumber); } } ``` [^2] --- #### 步骤四:运行与测试 1. 连接Android设备或启动模拟器 2. 点击工具栏 **Run → Run 'app'** 3. 测试功能: - 输入数字组合(如`3 + 5 =` 应显示`8`) - 验证连续运算(如`2 × 3 =` 后继续`+ 4 =` 应显示`10`) - 检查清除功能是否重置所有状态 --- ### 关键点说明 1. **事件绑定**:通过`android:onClick`属性将按钮与Activity中的方法关联 2. **状态管理**:使用`currentNumber`、`previousNumber`和`currentOperator`跟踪计算状态 3. **错误处理**:除法操作需检查除数是否为0 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值