Android studio制作简单计算器apk文件

首先建立相应视图

这是一个XML布局文件,用于创建登录界面。下面是每个组件的详细注释:

  1. ConstraintLayout:布局的根容器,用于在界面中定位和约束视图。

  1. TextView:显示“登录界面”文本,位于界面顶部。

  1. Button(id为button):登录按钮,点击后将触发登录操作。

  1. Button(id为button2):退出按钮,点击后将关闭当前活动。

  1. EditText(id为editTextTextPersonName2):用户名输入框,用户可以在此输入用户名。

  1. EditText(id为editTextTextPersonName3):密码输入框,用户可以在此输入密码。

  1. RadioGroup(id为radioGroup2):单选按钮组,用于容纳两个RadioButton。注意:在您提供的代码中,这些单选按钮没有实际用途。

  • a. RadioButton(id为radioButton2):显示“保存密码”的单选按钮。

  • b. RadioButton(id为radioButton):显示“RadioButton”的单选按钮,此处应该有一个描述性的文本,如“记住我”。

  1. CheckBox(id为checkBox):显示“自动登录”的复选框。注意:在您提供的代码中,此复选框没有实际用途。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".CalculateActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登录界面"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.473"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.036" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="72dp"
        android:layout_marginBottom="108dp"
        android:onClick="login"
        android:text="登入"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/radioGroup2"
        app:layout_constraintVertical_bias="0.633" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="退出"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintStart_toEndOf="@+id/button"
        app:layout_constraintTop_toTopOf="@+id/button"
        app:layout_constraintVertical_bias="0.0" />

    <EditText
        android:id="@+id/editTextTextPersonName2"
        android:layout_width="221dp"
        android:layout_height="69dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="zhanghao"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.417"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.09" />

    <EditText
        android:id="@+id/editTextTextPersonName3"
        android:layout_width="215dp"
        android:layout_height="81dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="mima"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.408"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2"
        app:layout_constraintVertical_bias="0.035" />

    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_width="131dp"
        android:layout_height="165dp"
        app:layout_constraintStart_toStartOf="@+id/checkBox"
        app:layout_constraintTop_toBottomOf="@+id/checkBox">

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="113dp"
            android:layout_height="72dp"
            android:layout_marginBottom="32dp"
            android:text="保存密码" />

        <RadioButton
            android:id="@+id/radioButton"
            android:layout_width="wrap_content"
            android:layout_height="61dp"
            android:text="RadioButton" />

    </RadioGroup>

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="106dp"
        android:layout_height="72dp"
        android:layout_marginTop="16dp"
        android:text="自动登录"
        app:layout_constraintStart_toStartOf="@+id/editTextTextPersonName3"
        app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName3" />

</androidx.constraintlayout.widget.ConstraintLayout>

编辑相应的Java文件

这是一个简单的登录界面应用程序的MainActivity类,其中包含一些基本组件,如TextView,EditText和Button。以下是关于代码的详细注释:

声明并初始化变量:

textViewTitle: TextView,显示"登录界面"标题。

editTextUsername: EditText,用户名输入框。

editTextPassword: EditText,密码输入框。

buttonLogin: Button,登录按钮。

buttonExit: Button,退出按钮。

在onCreate方法中:

a. 使用setContentView设置布局文件(activity_main4.xml)。

b. 使用findViewById获取布局文件中的组件并将其与相应的变量关联。

c. 定义一个字符串变量user和一个字符串变量password作为登录凭据。在此示例中,我们使用固定的用户名和密码(均为"123")。

为登录按钮设置点击监听器:

a. 获取用户输入的用户名和密码。

b. 检查用户名和密码是否为空,如果为空,则显示一个提示消息(Toast)。

c. 检查输入的用户名和密码是否与预定义的用户名和密码相匹配,如果匹配,则启动新的活动(CalculateActivity),并显示一个登录成功的提示消息。

d. 如果输入的用户名和密码与预定义的用户名和密码不匹配,则显示一个账号或密码错误的提示消息。

为退出按钮设置点击监听器:

a. 调用finish()方法以关闭当前活动(MainActivity)。

这个简单的应用程序允许用户输入用户名和密码,然后点击登录按钮。如果输入的用户名和密码与预定义的用户名和密码相匹配,将进入新的活动(CalculateActivity)。如果用户点击退出按钮,应用程序将关闭。

// 导入所需的包
package com.example.appjisuanqi;

// 导入所需的类
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

// 定义名为MainActivity的类,继承自AppCompatActivity
public class MainActivity extends AppCompatActivity {

    // 声明组件变量
    private TextView textViewTitle;
    private EditText editTextUsername;
    private EditText editTextPassword;
    private Button buttonLogin;
    private Button buttonExit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4); // 设置布局文件

        // 通过ID获取组件并关联变量
        textViewTitle = findViewById(R.id.textView);
        editTextUsername = findViewById(R.id.editTextTextPersonName2);
        editTextPassword = findViewById(R.id.editTextTextPersonName3);
        buttonLogin = findViewById(R.id.button);
        buttonExit = findViewById(R.id.button2);

        // 定义用户名和密码
        String user = "123";
        String password = "123";

        // 设置登录按钮点击监听器
        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入的用户名和密码
                String username = editTextUsername.getText().toString();
                String inputPassword = editTextPassword.getText().toString();

                // 检查用户名和密码是否为空
                if (username.isEmpty() || inputPassword.isEmpty()) {
                    Toast.makeText(MainActivity.this, "账号或密码不能为空", Toast.LENGTH_SHORT).show();
                } 
                // 检查输入的用户名和密码是否与预定义的用户名和密码相匹配
                else if (username.equals(user) && inputPassword.equals(password)) {
                    Intent intent = new Intent(MainActivity.this, CalculateActivity.class);
                    startActivity(intent);
                    Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                } 
                // 如果用户名和密码不匹配,显示错误消息
                else {
                    Toast.makeText(MainActivity.this, "账号或密码错误", Toast.LENGTH_SHORT).show();
                }
            }
        });

        // 设置退出按钮点击监听器
        buttonExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish(); // 关闭当前Activity
            }
        });
    }
}

接下来建立计算器界面

<?xml version="1.0" encoding="utf-8"?>
<!-- XML文件声明,指定版本和编码 -->

<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    <!-- 声明XML命名空间 -->
    xmlns:tools="http://schemas.android.com/tools"
    <!-- 声明工具命名空间 -->
    android:id="@+id/activity_main"
    <!-- 为GridLayout设置ID -->
    android:layout_width="wrap_content"
    <!-- GridLayout宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- GridLayout高度设置为包裹内容 -->
    android:paddingBottom="@dimen/activity_vertical_margin"
    <!-- GridLayout底部内边距 -->
    android:paddingLeft="@dimen/activity_horizontal_margin"
    <!-- GridLayout左侧内边距 -->
    android:paddingRight="@dimen/activity_horizontal_margin"
    <!-- GridLayout右侧内边距 -->
    android:paddingTop="@dimen/activity_vertical_margin"
    <!-- GridLayout顶部内边距 -->
    android:columnCount="4"
    <!-- GridLayout列数设置为4 -->
    android:rowCount="7"
    <!-- GridLayout行数设置为7 -->
    tools:context="com.example.appjisuanqi.CalculateActivity">
    <!-- 设置与此布局关联的Activity -->

   
    
<!-- 显示计算结果的EditText组件 -->
<EditText
        android:id="@+id/et"
        <!-- 为EditText设置ID -->
        android:layout_width="match_parent"
        <!-- EditText宽度设置为匹配父布局 -->
        android:layout_height="wrap_content"
        <!-- EditText高度设置为包裹内容 -->
        android:layout_columnSpan="4"
        <!-- EditText跨越4列 -->
        android:layout_columnWeight="1"
        <!-- EditText列权重设置为1 -->
        android:ems="10"
        <!-- EditText设置为10个字符宽度 -->
        android:gravity="end"
        <!-- EditText内容显示在右侧 -->
        android:hint="@string/app_name"
        <!-- EditText提示文本设置为应用名 -->
        android:text=""
        <!-- EditText的默认文本为空 -->
        android:textSize="40dp" />
        <!-- EditText的文本大小设置为40dp -->

    <!-- 数字按钮和操作按钮 -->
    <!-- 按钮7 -->
    <Button
        android:id="@+id/btn7"
        <!-- 为按钮7设置ID -->
        android:layout_width="wrap_content"
        <!-- 按钮7宽度设置为包裹内容 -->
        android:layout_height="wrap_content"
        <!-- 按钮7高度设置为包裹内容 -->
        android:text="7"
        <!-- 按钮7显示文本为"7" -->
        android:textSize="@dimen/tsize"
        <!-- 按钮7文本大小引用资源文件 -->
        android:layout_margin="5dp" />
        <!-- 按钮7外边距设置为5dp -->

<!-- 按钮8 -->
<Button
    android:id="@+id/btn8"
    <!-- 为按钮8设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮8宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    android:text="8"
    <!-- 按钮8显示文本为"8" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮8文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮8外边距设置为5dp -->


<!-- 按钮9 -->
<Button
    android:id="@+id/btn9"
    <!-- 为按钮9设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮9宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮9高度设置为包裹内容 -->
    android:text="9"
    <!-- 按钮9显示文本为"9" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮9文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮9外边距设置为5dp -->

<!-- 清除按钮 -->
<Button
    android:id="@+id/btnc"
    <!-- 为清除按钮设置ID -->
    android:layout_width="wrap_content"
    <!-- 清除按钮宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 清除按钮高度设置为包裹内容 -->
    android:text="C"
    <!-- 清除按钮显示文本为"C" -->
    android:textSize="@dimen/tsize"
    <!-- 清除按钮文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 清除按钮外边距设置为5dp -->

<!-- 按钮4 -->
<Button
    android:id="@+id/btn4"
    <!-- 为按钮4设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮4宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮4高度设置为包裹内容 -->
    android:text="4"
    <!-- 按钮4显示文本为"4" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮4文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮4外边距设置为5dp -->

<!-- 按钮5 -->
<Button
    android:id="@+id/btn5"
    <!-- 为按钮5设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮5宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮5高度设置为包裹内容 -->
    android:text="5"
    <!-- 按钮5显示文本为"5" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮5文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮5外边距设置为5dp -->

<!-- 按钮6 -->
<Button
    android:id="@+id/btn6"
    <!-- 为按钮6设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮6宽度设置为包裹内容 -->
    android:layout_height="wrap_content
    <!-- 按钮6高度设置为包裹内容 -->
    android:text="6"
    <!-- 按钮6显示文本为"6" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮6文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮6外边距设置为5dp -->

<!-- 除法按钮 -->
<Button
    android:id="@+id/btndiv"
    <!-- 为除法按钮设置ID -->
    android:layout_width="wrap_content"
    <!-- 除法按钮宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 除法按钮高度设置为包裹内容 -->
    android:text="/"
    <!-- 除法按钮显示文本为"/" -->
    android:textSize="@dimen/tsize"
    <!-- 除法按钮文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 除法按钮外边距设置为5dp -->

<!-- 按钮1 -->
<Button
    android:id="@+id/btn1"
    <!-- 为按钮1设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮1宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮1高度设置为包裹内容 -->
    android:text="1"
    <!-- 按钮1显示文本为"1" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮1文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮1外边距设置为5dp -->

<!-- 按钮2 -->
<Button
    android:id="@+id/btn2"
    <!-- 为按钮2设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮2宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮2高度设置为包裹内容 -->
    android:text="2"
    <!-- 按钮2显示文本为"2" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮2文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮2外边距设置为5dp -->

<!-- 按钮3 -->
<Button
    android:id="@+id/btn3"
    <!-- 为按钮3设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮3宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮3高度设置为包裹内容 -->
    android:text="3"
    <!-- 按钮3显示文本为"3" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮3文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 按钮3外边距设置为5dp -->

<!-- 乘法按钮 -->
<Button
    android:id="@+id/btnmul"
    <!-- 为乘法按钮设置ID -->
    android:layout_width="wrap_content"
    <!-- 乘法按钮宽度设置为包裹内容 -->
    android:layout_height
    <!-- 乘法按钮高度设置为包裹内容 -->
    android:text="*"
    <!-- 乘法按钮显示文本为"*" -->
    android:textSize="@dimen/tsize"
    <!-- 乘法按钮文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 乘法按钮外边距设置为5dp -->

<!-- 按钮0 -->
<Button
    android:id="@+id/btn0"
    <!-- 为按钮0设置ID -->
    android:layout_width="wrap_content"
    <!-- 按钮0宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 按钮0高度设置为包裹内容 -->
    android:text="0"
    <!-- 按钮0显示文本为"0" -->
    android:textSize="@dimen/tsize"
    <!-- 按钮0文本大小引用资源文件 -->
    android:layout_columnSpan="2"
    <!-- 按钮0跨越两列 -->
    android:layout_gravity="fill_horizontal"
    <!-- 按钮0水平填充 -->
    android:layout_margin="5dp" />
    <!-- 按钮0外边距设置为5dp -->

<!-- 小数点按钮 -->
<Button
    android:id="@+id/btndot"
    <!-- 为小数点按钮设置ID -->
    android:layout_width="wrap_content"
    <!-- 小数点按钮宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 小数点按钮高度设置为包裹内容 -->
    android:text="."
    <!-- 小数点按钮显示文本为"." -->
    android:textSize="@dimen/tsize"
    <!-- 小数点按钮文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 小数点按钮外边距设置为5dp -->

<!-- 减法按钮 -->
<Button
    android:id="@+id/btnsub"
    <!-- 为减法按钮设置ID -->
    android:layout_width="wrap_content"
    <!-- 减法按钮宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 减法按钮高度设置为包裹内容 -->
    android:text="-"
    <!-- 减法按钮显示文本为"-" -->
    android:textSize="@dimen/tsize"
    <!-- 减法按钮文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 减法按钮外边距设置为5dp -->

<!-- 等于按钮 -->
<Button
    android:id="@+id/btnequ"
    <!-- 为等于按钮设置ID -->
    android:text="="
    <!-- 等于按钮显示文本为"=" -->
    android:layout_width="wrap_content"
    <!-- 等于按钮宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 等于按钮高度设置为包裹内容 -->
    android:layout_columnSpan="3"
    <!-- 等于按钮跨越三列 -->
    android:textSize="@dimen/tsize"
    <!-- 等于按钮文本大小引用资源文件 -->
    android:layout_gravity="fill_horizontal"
    <!-- 等于按钮水平填充 -->
    android:layout_margin="5dp" />
    <!-- 等于按钮外边距设置为5dp -->

<!-- 加法按钮 -->
<Button
    android:id="@+id/btnadd"
    <!-- 为加法按钮设置ID -->
    android:layout_width="wrap_content"
    <!-- 加法按钮宽度设置为包裹内容 -->
    android:layout_height="wrap_content"
    <!-- 加法按钮高度设置为包裹内容 -->
    android:text="+"
    <!-- 加法按钮显示文本为"+" -->
    android:textSize="@dimen/tsize"
    <!-- 加法按钮文本大小引用资源文件 -->
    android:layout_margin="5dp" />
    <!-- 加法按钮外边距设置为5dp -->
</GridLayout>
<!-- GridLayout结束标签,这里结束整个网格布局 -->

这个XML代码片段是一个简单的计算器布局,包含一个输入框(EditText)和一系列按钮。输入框用于显示输入的数字和计算结果,按钮用于输入数字和执行基本的四则运算操作。网格布局被设置为4列和7行,用于容纳所有控件。每个控件的外边距都设置为5dp,以便在按钮之间留有空隙。按钮的文本大小均引用自资源文件。

编辑相应的Java文件

// 声明应用的包名
package com.example.appjisuanqi;

// 导入所需的类
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

// 定义一个名为CalculateActivity的类,该类继承自AppCompatActivity
public class CalculateActivity extends AppCompatActivity {

    // 声明所需的组件变量
    private EditText et;
    private Button btn1;
    private Button btn2;
    private Button btn3;
    private Button btn4;
    private Button btn5;
    private Button btn6;
    private Button btn7;
    private Button btn8;
    private Button btn9;
    private Button btndot, btnadd, btnsub, btnmul, btndiv, btnc, btnequ;

    // 声明计算器需要的变量
    private double num1, num2;
    private char operation;
    private boolean isOperationSelected;

    // 在应用创建时执行的方法
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        // 将布局文件中的组件与变量绑定
        et = findViewById(R.id.et);
        Button btn0 = findViewById(R.id.btn0);
        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn3 = findViewById(R.id.btn3);
        btn4 = findViewById(R.id.btn4);
        btn5 = findViewById(R.id.btn5);
        btn6 = findViewById(R.id.btn6);
        btn7 = findViewById(R.id.btn7);
        btn8 = findViewById(R.id.btn8);
        btn9 = findViewById(R.id.btn9);
        btndot = findViewById(R.id.btndot);
        btnadd = findViewById(R.id.btnadd);
        btnsub = findViewById(R.id.btnsub);
        btnmul = findViewById(R.id.btnmul);
        btndiv = findViewById(R.id.btndiv);
        btnc = findViewById(R.id.btnc);
        btnequ = findViewById(R.id.btnequ);

        // 为各个按钮设置点击事件监听器
        // 数字按钮的点击事件
        btn0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                appendNumber("0");
            }
        });
        // ...其他数字按钮的点击事件省略,类似于btn0

        // 小数点按钮的点击事件
        btndot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                appendNumber(".");
            }
        });

        // 运算符按钮的点击事件
        btnadd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setOperation('+');
            }
        });
        // ...其他运算符按钮的点击事件省略,类似于btnadd

        // 清除按钮的点击事件
        btnc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                et.setText("");
                num1 = 0;
                num2 = 0;
                isOperationSelected = false;
            }
        });

        // 等于按钮的点击事件
        btnequ.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!isOperationSelected) {
                    Toast.makeText(CalculateActivity.this, "请选择操作符", Toast.LENGTH_SHORT).show();
                    return;
                // 如果已选择操作符,尝试执行计算
                try {
                    num2 = Double.parseDouble(et.getText().toString());
                    double result = performOperation();
                    et.setText(String.valueOf(result));
                } catch (NumberFormatException e) {
                    Toast.makeText(CalculateActivity.this, "请输入数字", Toast.LENGTH_SHORT).show();
                }

                isOperationSelected = false;
            }
        });
    }

    // 定义一个方法,用于将数字或小数点添加到显示框中
    private void appendNumber(String num) {
        String currentText = et.getText().toString();
        et.setText(currentText + num);
    }

    // 定义一个方法,用于设置操作符
    private void setOperation(char op) {
        if (!isOperationSelected) {
            try {
                num1 = Double.parseDouble(et.getText().toString());
                operation = op;
                et.setText("");
                isOperationSelected = true;
            } catch (NumberFormatException e) {
                Toast.makeText(this, "请输入数字", Toast.LENGTH_SHORT).show();
            }
        } else {
            Toast.makeText(this, "操作符已选择", Toast.LENGTH_SHORT).show();
        }
    }

    // 定义一个方法,用于执行运算
    private double performOperation() {
        double result = 0;

        switch (operation) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                } else {
                    Toast.makeText(this, "除数不能为零", Toast.LENGTH_SHORT).show();
                }
                break;
        }

        return result;
    }
}

                    

这一部分代码完成了计算器的主要功能,包括按钮的点击事件监听器设置以及各个运算符的执行逻辑。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是制作简易计算器的步骤: 1. 打开Android Studio,创建一个新项目。 2. 在布局文件中添加一个EditText用于显示计算结果和多个Button用于输入数字和运算符。 3. 在MainActivity中获取EditText和Button的引用,并设置Button的点击事件。 4. 在点击事件中,根据按钮的标识符进行不同的计算,并将结果显示到EditText中。 5. 完成以上步骤后,就可以运行程序并测试计算器的功能了。 下面是一个简单的例子代码,供参考: activity_main.xml: ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" tools:context=".MainActivity"> <EditText android:id="@+id/result" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="16dp" android:layout_marginTop="16dp" android:hint="0" android:padding="16dp" android:textAlignment="textEnd" android:textSize="24sp" /> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:rowCount="4" android:columnCount="4" android:layout_below="@id/result"> <Button android:id="@+id/button_1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="1" android:textSize="24sp" /> <Button android:id="@+id/button_2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="2" android:textSize="24sp" /> <Button android:id="@+id/button_3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="3" android:textSize="24sp" /> <Button android:id="@+id/button_add" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="+" android:textSize="24sp" /> <Button android:id="@+id/button_4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="4" android:textSize="24sp" /> <Button android:id="@+id/button_5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="5" android:textSize="24sp" /> <Button android:id="@+id/button_6" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="6" android:textSize="24sp" /> <Button android:id="@+id/button_subtract" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="-" android:textSize="24sp" /> <Button android:id="@+id/button_7" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="7" android:textSize="24sp" /> <Button android:id="@+id/button_8" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="8" android:textSize="24sp" /> <Button android:id="@+id/button_9" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="9" android:textSize="24sp" /> <Button android:id="@+id/button_multiply" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="*" android:textSize="24sp" /> <Button android:id="@+id/button_clear" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:layout_gravity="fill" android:text="C" android:textSize="24sp" /> <Button android:id="@+id/button_0" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="0" android:textSize="24sp" /> <Button android:id="@+id/button_equal" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="=" android:textSize="24sp" /> <Button android:id="@+id/button_divide" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_columnWeight="1" android:layout_rowWeight="1" android:text="/" android:textSize="24sp" /> </GridLayout> </RelativeLayout> ``` MainActivity.java: ``` public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText result; private Button button_0, button_1, button_2, button_3, button_4, button_5, button_6, button_7, button_8, button_9; private Button button_add, button_subtract, button_multiply, button_divide, button_clear, button_equal; private boolean isAddition, isSubtraction, isMultiplication, isDivision; private float value1, value2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); result = findViewById(R.id.result); button_0 = findViewById(R.id.button_0); button_1 = findViewById(R.id.button_1); button_2 = findViewById(R.id.button_2); button_3 = findViewById(R.id.button_3); button_4 = findViewById(R.id.button_4); button_5 = findViewById(R.id.button_5); button_6 = findViewById(R.id.button_6); button_7 = findViewById(R.id.button_7); button_8 = findViewById(R.id.button_8); button_9 = findViewById(R.id.button_9); button_add = findViewById(R.id.button_add); button_subtract = findViewById(R.id.button_subtract); button_multiply = findViewById(R.id.button_multiply); button_divide = findViewById(R.id.button_divide); button_clear = findViewById(R.id.button_clear); button_equal = findViewById(R.id.button_equal); button_0.setOnClickListener(this); button_1.setOnClickListener(this); button_2.setOnClickListener(this); button_3.setOnClickListener(this); button_4.setOnClickListener(this); button_5.setOnClickListener(this); button_6.setOnClickListener(this); button_7.setOnClickListener(this); button_8.setOnClickListener(this); button_9.setOnClickListener(this); button_add.setOnClickListener(this); button_subtract.setOnClickListener(this); button_multiply.setOnClickListener(this); button_divide.setOnClickListener(this); button_clear.setOnClickListener(this); button_equal.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button_0: result.setText(result.getText() + "0"); break; case R.id.button_1: result.setText(result.getText() + "1"); break; case R.id.button_2: result.setText(result.getText() + "2"); break; case R.id.button_3: result.setText(result.getText() + "3"); break; case R.id.button_4: result.setText(result.getText() + "4"); break; case R.id.button_5: result.setText(result.getText() + "5"); break; case R.id.button_6: result.setText(result.getText() + "6"); break; case R.id.button_7: result.setText(result.getText() + "7"); break; case R.id.button_8: result.setText(result.getText() + "8"); break; case R.id.button_9: result.setText(result.getText() + "9"); break; case R.id.button_add: if (result == null) { result.setText(""); } else { value1 = Float.parseFloat(result.getText() + ""); isAddition = true; result.setText(null); } break; case R.id.button_subtract: if (result == null) { result.setText(""); } else { value1 = Float.parseFloat(result.getText() + ""); isSubtraction = true; result.setText(null); } break; case R.id.button_multiply: if (result == null) { result.setText(""); } else { value1 = Float.parseFloat(result.getText() + ""); isMultiplication = true; result.setText(null); } break; case R.id.button_divide: if (result == null) { result.setText(""); } else { value1 = Float.parseFloat(result.getText() + ""); isDivision = true; result.setText(null); } break; case R.id.button_clear: result.setText(""); break; case R.id.button_equal: value2 = Float.parseFloat(result.getText() + ""); if (isAddition) { result.setText(value1 + value2 + ""); isAddition = false; } if (isSubtraction) { result.setText(value1 - value2 + ""); isSubtraction = false; } if (isMultiplication) { result.setText(value1 * value2 + ""); isMultiplication = false; } if (isDivision) { result.setText(value1 / value2 + ""); isDivision = false; } break; } } } ``` 这样,一个简单的计算器就完成了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值