用Android Studio 编写简易计算器

用Android Studio 编写简易计算器

这是用Android Studio编写的 简易计算器 。功能主要是实现简单的加减操作,以及比较复杂的四则运算。

话不多说请看设计!

界面设计

在这里插入图片描述
在layout下面的calu.xml文件進行設計,推荐使用线性布局。沒有的先自行创建文件。

源码如下

<?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">

    <TextView
        android:id="@+id/textResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:text="请输入:"
        android:textSize="30sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <Button
            android:id="@+id/buttonC"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="C" />
        <Button
            android:id="@+id/buttonDEL"
            android:layout_width="0dp"
            android:layout_weight="2"
            android:layout_height="wrap_content"
            android:text="DEL" />
        <Button
            android:id="@+id/buttonADD"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="+" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="myClick"
            android:text="1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="2" />
        <Button
            android:id="@+id/button3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="3" />
        <Button
            android:id="@+id/buttonSUB"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="-" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="myClick"
            android:text="4" />

        <Button
            android:id="@+id/button5"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="5" />
        <Button
            android:id="@+id/button6"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="6" />
        <Button
            android:id="@+id/buttonMUL"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="*" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button7"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="myClick"
            android:text="7" />

        <Button
            android:id="@+id/button8"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="8" />
        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="9" />
        <Button
            android:id="@+id/buttonDIV"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="/" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/buttonZero"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="myClick"
            android:text="0" />

        <Button
            android:id="@+id/buttonPoint"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:onClick="myClick"
            android:layout_height="wrap_content"
            android:text="." />
        <Button
            android:id="@+id/buttonResult"
            android:layout_width="0dp"
            android:layout_weight="2"
            android:layout_height="wrap_content"
            android:text="=" />


    </LinearLayout>

</LinearLayout>

功能的實現

代码如下:

package com.example.a124240.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

/**
 * Created by qiaolong 2021/3/20.
 */

public class MainActivity extends AppCompatActivity {

    private TextView textResult;
    private Button buttonAdd, buttonSub, buttonMul, buttonDiv, buttonDel, buttonCle, buttonRes;
    // 定义里一个字符串
    private StringBuffer digital1 = new StringBuffer(), digital2 = new StringBuffer(), digital3 = new StringBuffer();
    private boolean isChar = false;
    private boolean isDigital1 = true;
    private boolean flag1 = false;
    private float result;
    private String signal;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.calu1);
        // textResult = (TextView) this.findViewById(R.id.textResult);
        //实例化
        init();

        //加法
        buttonAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(digital1.length() == 0){
                    return;
                }
                isChar = true;
                textResult.setText("0");
                
                if (flag1){

                    float a = Float.parseFloat(digital1.toString());
                    float b = Float.parseFloat(digital2.toString());
                    mySignal(signal,a,b);
                    //进行 浮点型向stringbuffer的转换【float->string->stringbuffer】
                    String s1 = Float.toString(result);
                    digital1= new StringBuffer(s1);
                    textResult.setText(digital1);
                    digital2 = new StringBuffer();

                }else {
                    textResult.setText(digital1);
                }
                signal = "+";

                flag1 = true;

            }

        });
        //减法
        buttonSub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(digital1.length() == 0){
                    return;
                }
                isChar = true;
                textResult.setText("0");
                if (flag1){

                    float a = Float.parseFloat(digital1.toString());
                    float b = Float.parseFloat(digital2.toString());
                    mySignal(signal,a,b);
                    textResult.setText("0");
                    //进行 浮点型向stringbuffer的转换【float->string->stringbuffer】
                    String s1 = Float.toString(result);
                    digital1= new StringBuffer(s1);
                    textResult.setText(digital1);
                    digital2 = new StringBuffer();

                }
                signal = "-";
                flag1 = true;


            }
        });
        //乘法
        buttonMul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(digital1.length() == 0){
                    return;
                }
                isChar = true;
                textResult.setText("0");
                if (flag1){

                    float a = Float.parseFloat(digital1.toString());
                    float b = Float.parseFloat(digital2.toString());
                    mySignal(signal,a,b);
                    textResult.setText("0");
                    //进行 浮点型向stringbuffer的转换【float->string->stringbuffer】
                    String s1 = Float.toString(result);
                    digital1= new StringBuffer(s1);
                    textResult.setText(digital1);
                    digital2 = new StringBuffer();
                }
                signal = "*";
                flag1 = true;

            }
        });
        //除法
        buttonDiv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(digital1.length() == 0){
                    return;
                }
                isChar = true;
                textResult.setText("0");
                if (flag1){

                    float a = Float.parseFloat(digital1.toString());
                    float b = Float.parseFloat(digital2.toString());
                    mySignal(signal,a,b);
                    textResult.setText("0");
                    //进行 浮点型向stringbuffer的转换【float->string->stringbuffer】
                    String s1 = Float.toString(result);
                    digital1= new StringBuffer(s1);
                    textResult.setText(digital1);
                    digital2 = new StringBuffer();
                }
                signal = "/";
                flag1 = true;

            }
        });

        //等号
        buttonRes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(digital1.length() == 0 || digital2.length() == 0){
                    return;
                }
                float a = Float.parseFloat(digital1.toString());
                float b = Float.parseFloat(digital2.toString());
                mySignal(signal,a,b);

                isChar = false;
                flag1 = false;
                //进行 数字向stringbuffer的转换【float->string->stringbuffer】
                String s1 = Float.toString(result);
                digital1= new StringBuffer(s1);
                textResult.setText(digital1);
                digital2 = new StringBuffer();


            }
        });

        //清除全部
        buttonCle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(isDigital1&&(!digital1.equals(null))){
                    digital1 = new StringBuffer("");
                    digital2 = new StringBuffer("");

                } else {

                    digital1 = new StringBuffer("");
                    digital2 = new StringBuffer("");

                }
                isChar = false;
                flag1 = false;
                textResult.setText("0");
            }
        });
        //清除一个
        buttonDel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isDigital1) {
                    if (digital1.length() > 0) {
                        String temp = digital1.substring(0, digital1.length() - 1);//存疑
                        digital1 = new StringBuffer();
                        digital1.append(temp);
                        textResult.setText(digital1.toString());
                    } else {
                        digital1 = new StringBuffer();
                        textResult.setText("0");
                    }

                }
                else{
                    if (digital2.length() > 0) {
                        String temp = digital2.substring(0,digital2.length() - 1);
                        digital2 = new StringBuffer();
                        digital2.append(temp);
                        textResult.setText(digital2.toString());
                    }
                }
            }
        });
    }

    //实例化
    void init(){
        //buttonSub, buttonMul, buttonDiv, buttonDel, buttonCle, buttonRes;
        textResult = (TextView) this.findViewById(R.id.textResult);
        buttonAdd = (Button) this.findViewById(R.id.buttonADD);  //强制类型转换
        buttonSub = (Button) this.findViewById(R.id.buttonSUB);
        buttonMul = (Button) this.findViewById(R.id.buttonMUL);
        buttonDiv = (Button) this.findViewById(R.id.buttonDIV);
        buttonDel = (Button) this.findViewById(R.id.buttonDEL);
        buttonCle = (Button) this.findViewById(R.id.buttonC);
        buttonRes = (Button) this.findViewById(R.id.buttonResult);


    }
    //关于符号
    void mySignal(String s,float a,float b){

        switch (s) {

            case "+":
                result = a + b;
                break;
            case "-":
                result = a - b;
                break;
            case "*":
                result = a * b;
                break;
            case "/":
                result = a / b;
                break;
        }
    }
    public void myClick(View v) {

        switch (v.getId()) {

            case R.id.button1:

                if (isChar){
                    digital2.append("1");
                    textResult.setText(digital2);
                }else {
                    digital1.append("1");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button2:
                if (isChar){
                    digital2.append("2");
                    textResult.setText(digital2);
                }else {
                    digital1.append("2");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button3:
                if (isChar){
                    digital2.append("3");
                    textResult.setText(digital2);
                }else {
                    digital1.append("3");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button4:
                if (isChar){
                    digital2.append("4");
                    textResult.setText(digital2);
                }else {
                    digital1.append("4");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button5:
                if (isChar){
                    digital2.append("5");
                    textResult.setText(digital2);
                }else {
                    digital1.append("5");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button6:
                if (isChar){
                    digital2.append("6");
                    textResult.setText(digital2);
                }else {
                    digital1.append("6");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button7:
                if (isChar){
                    digital2.append("7");
                    textResult.setText(digital2);
                }else {
                    digital1.append("7");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button8:
                if (isChar){
                    digital2.append("8");
                    textResult.setText(digital2);
                }else {
                    digital1.append("8");
                    textResult.setText(digital1);
                }
                break;
            case R.id.button9:
                if (isChar){
                    digital2.append("9");
                    textResult.setText(digital2);
                }else {
                    digital1.append("9");
                    textResult.setText(digital1);
                }
                break;
            case R.id.buttonZero:
                if (isChar){
                    digital2.append("0");
                    textResult.setText(digital2);
                }else {
                    digital1.append("0");
                    textResult.setText(digital1);
                }
                break;
            case R.id.buttonPoint:
                if (isChar){  //点了 + 号
                    digital2.append("."); //
                    textResult.setText(digital2);
                }else {
                    digital1.append(".");
                    textResult.setText(digital1);
                }
                break;

        }
    }

}

其他配置

1.頂部標題

打開Java—res—string.xml 更換計算器的頂部在这里插入图片描述

2.修改測試

在这里插入图片描述
欢迎大家一起交流!

猜你喜欢

转载自blog.csdn.net/weixin_48690925/article/details/115053117