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;

}

}

}

相关推荐
kk爱闹20 分钟前
【挑战14天学完python和pytorch】- day01
android·pytorch·python
每次的天空2 小时前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
恋猫de小郭2 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
断剑重铸之日3 小时前
Android自定义相机开发(类似OCR扫描相机)
android
随心最为安3 小时前
Android Library Maven 发布完整流程指南
android
岁月玲珑4 小时前
【使用Android Studio调试手机app时候手机老掉线问题】
android·ide·android studio
还鮟8 小时前
CTF Web的数组巧用
android
小蜜蜂嗡嗡9 小时前
Android Studio flutter项目运行、打包时间太长
android·flutter·android studio
aqi009 小时前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
zhangphil11 小时前
Android理解onTrimMemory中ComponentCallbacks2的内存警戒水位线值
android