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;

}

}

}

相关推荐
锅拌饭10 分钟前
Android Handler(一) 同步屏障泄露导致页面假死
android
锅拌饭15 分钟前
Android Handler(二) 同步屏障泄露检测
android
手机不死我是天子2 小时前
《Android 核心组件深度系列 · 第 3 篇 BroadcastReceiver》
android·android studio
用户17345666963472 小时前
Android 日志库:高性能压缩加密日志系统
android
恋猫de小郭2 小时前
React 和 React Native 不再直接归属 Meta,React 基金会成立
android·前端·ios
bst@微胖子3 小时前
鸿蒙实现滴滴出行项目之侧边抽屉栏以及权限以及搜索定位功能
android·华为·harmonyos
zcz16071278213 小时前
Docker Compose 搭建 LNMP 环境并部署 WordPress 论坛
android·adb·docker
Pika12 小时前
深入浅出 Compose 测量机制
android·android jetpack·composer
木易 士心18 小时前
MPAndroidChart 用法解析和性能优化 - Kotlin & Java 双版本
android·java·kotlin
消失的旧时光-194318 小时前
Kotlin Flow 与“天然背压”(完整示例)
android·开发语言·kotlin