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;

}

}

}

相关推荐
程序员Android1 小时前
Android 手机耗电数据分析工具介绍
android·智能手机
moz与京2 小时前
【记】如何理解kotlin中的委托属性?
android·开发语言·kotlin
左少华2 小时前
Kotlin-inline函数特效
android·开发语言·kotlin
顾林海2 小时前
解锁Android应用进程启动:从代码到原理深度剖析
android·linux·操作系统
代码不停3 小时前
Java中的封装
android·java·开发语言
pengyu3 小时前
系统化掌握Flutter开发之路由(Route)(一):筑基之旅
android·flutter·dart
氦客3 小时前
Kotlin知识体系(一) : Kotlin的五大基础语法特性
android·开发语言·kotlin·基础语法·特性·知识体系
张风捷特烈5 小时前
Flutter&Flame 游戏实践#22 | 全平台游戏盒#1
android·flutter·游戏开发
恋猫de小郭6 小时前
Android PC 要来了?Android 16 Beta3 出现 Enable desktop experience features 选项
android·前端·flutter