Android实现简易计算器

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<EditText

android:id="@+id/result_display"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="number|numberDecimal"

android:editable="false"

android:gravity="end"

android:padding="16dp"

android:textSize="24sp" />

<TableLayout

android:layout_width="match_parent"

android:layout_height="wrap_content">

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/btn_7"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="7"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_8"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="8"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_9"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="9"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_divide"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="/"

android:onClick="onButtonClick" />

</TableRow>

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/btn_4"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="4"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_5"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="5"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_6"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="6"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_multiply"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="*"

android:onClick="onButtonClick" />

</TableRow>

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/btn_1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="1"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="2"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="3"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_minus"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="-"

android:onClick="onButtonClick" />

</TableRow>

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/btn_0"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="0"

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_dot"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="."

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_equal"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="="

android:onClick="onButtonClick" />

<Button

android:id="@+id/btn_plus"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="+"

android:onClick="onButtonClick" />

</TableRow>

</TableLayout>

</LinearLayout>

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private EditText resultDisplay;

private String currentOperator = "";

private double num1 = 0;

private double num2 = 0;

private boolean operatorEntered = false;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

resultDisplay = findViewById(R.id.result_display);

}

public void onButtonClick(View view) {

Button button = (Button) view;

String buttonText = button.getText().toString();

if (buttonText.matches("[0-9.]")) {

if (operatorEntered) {

resultDisplay.setText(buttonText);

operatorEntered = false;

} else {

resultDisplay.setText(resultDisplay.getText() + buttonText);

}

} else if (buttonText.matches("[+\\-*/]")) {

num1 = Double.parseDouble(resultDisplay.getText().toString());

currentOperator = buttonText;

operatorEntered = true;

} else if (buttonText.equals("=")) {

num2 = Double.parseDouble(resultDisplay.getText().toString());

double result = performCalculation(num1, num2, currentOperator);

resultDisplay.setText(String.valueOf(result));

operatorEntered = false;

} else {

Toast.makeText(this, "Invalid operation", Toast.LENGTH_SHORT).show();

}

}

private double performCalculation(double num1, double num2, String operator) {

switch (operator) {

case "+":

return num1 + num2;

case "-":

return num1 - num2;

case "*":

return num1 * num2;

case "/":

if (num2 != 0) {

return num1 / num2;

} else {

Toast.makeText(this, "Division by zero", Toast.LENGTH_SHORT).show();

return 0;

}

default:

return 0;

}

}

}

相关推荐
2601_949575864 小时前
Flutter for OpenHarmony二手物品置换App实战 - 表单验证实现
android·java·flutter
龚礼鹏5 小时前
图像显示框架八——BufferQueue与BLASTBufferQueue(基于android 15源码分析)
android·c语言
1登峰造极6 小时前
uniapp 运行安卓报错reportJSException >>>> exception function:createInstanceContext, exception:white screen
android·java·uni-app
木易 士心6 小时前
Android Handler 机制原理详解
android
kkk_皮蛋6 小时前
作为一个学生,如何用免费 AI 工具手搓了一款 Android AI 日记 App
android·人工智能
金山毒霸电脑医生6 小时前
植物大战僵尸杂交版最新v0.2版下载安装|2025图文解析教程
android·游戏·ios·植物大战僵尸·软件下载安装
羑悻的小杀马特6 小时前
Docker-Android 容器化 + cpolar 穿透,完善异地调试
android·运维·docker·容器·cpolar
恋猫de小郭6 小时前
Android Gradle Plugin 9.0 发布,为什么这会是个史诗级大坑版本
android·flutter·ios·开源
Calebbbbb8 小时前
Ubuntu 24.04 + Android 15 (AOSP) 环境搭建与源码同步完整指南
android·linux·ubuntu
小小码农Come on9 小时前
QT中窗口位置、相对位置、绝对位置
android·开发语言·qt