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;

}

}

}

相关推荐
zopple8 小时前
Laravel9.X重磅升级:十大核心特性解析
android
私人珍藏库8 小时前
【windows】跨平台 Android 刷机Root工具箱
android·windows·工具·刷机·软件·多功能
summerkissyou198710 小时前
Android-MediaSession-播放流程和例子
android·mediasession
私人珍藏库11 小时前
[Android] 蓝叠模拟器工具箱v1.1
android·智能手机·app·工具·软件·多功能
云霄IT13 小时前
安卓开发之java转dex再转smali
android·java·python
XiaoLeisj14 小时前
Android 短视频项目实战:从用户中心页与沉浸式登录,到验证码鉴权、用户信息持久化和 EventBus 登录态同步
android·webview·eventbus·countdowntimer·token 加密·键值对存储 sp·封装toast/加载 ui
JJay.15 小时前
Android BLE 扫描连接与收发消息实战
android
fly spider15 小时前
MySQL索引篇
android·数据库·mysql
xinhuanjieyi16 小时前
php setplayersjson实现类型转换和文件锁定机制应对高并发
android·开发语言·php
533_16 小时前
[vxe-table] 表头:点击出现输入框
android·java·javascript