android calculator

1. Not much to say, directly to the renderings

Simple operations such as addition, subtraction, multiplication and division, square, reciprocal, and square root can be performed
renderings

2. Java code

package com.example.onlinestudyhelper.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.example.onlinestudyhelper.R;

public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener{
    
    
    private TextView tv_result;
    private String firstNum = "";
    private String operator = "";
    private String secondNum = "";
    //当前计算结果
    private String result = "";
    //显示文本内容
    private String showText = "";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

        tv_result = findViewById(R.id.tv_result);
        //为每个按钮控件设置点击监听
        findViewById(R.id.btn_cancel).setOnClickListener(this);
        findViewById(R.id.btn_divide).setOnClickListener(this);
        findViewById(R.id.btn_multiply).setOnClickListener(this);
        findViewById(R.id.btn_clear).setOnClickListener(this);
        findViewById(R.id.btn_seven).setOnClickListener(this);
        findViewById(R.id.btn_eight).setOnClickListener(this);
        findViewById(R.id.btn_nine).setOnClickListener(this);
        findViewById(R.id.btn_plus).setOnClickListener(this);
        findViewById(R.id.btn_four).setOnClickListener(this);
        findViewById(R.id.btn_five).setOnClickListener(this);
        findViewById(R.id.btn_six).setOnClickListener(this);
        findViewById(R.id.btn_minus).setOnClickListener(this);
        findViewById(R.id.btn_one).setOnClickListener(this);
        findViewById(R.id.btn_two).setOnClickListener(this);
        findViewById(R.id.btn_three).setOnClickListener(this);
        findViewById(R.id.btn_sqrt).setOnClickListener(this);
        findViewById(R.id.btn_1_x).setOnClickListener(this);
        findViewById(R.id.btn_zero).setOnClickListener(this);
        findViewById(R.id.btn_dot).setOnClickListener(this);
        findViewById(R.id.btn_equal).setOnClickListener(this);


    }

    @Override
    public void onClick(View view){
    
    
        //得到内容
        String inputText;
        inputText = ((TextView) view).getText().toString();
        switch (view.getId()){
    
    
            case R.id.btn_clear:
                clear();
                break;
            case R.id.btn_cancel:
                double pf_result = Double.parseDouble(firstNum) *Double.parseDouble(firstNum);
                refreshOperate(String.valueOf(pf_result));
                refreshText(showText + "²=" +result);
                break;
            case R.id.btn_plus:
            case R.id.btn_minus:
            case R.id.btn_multiply:
            case R.id.btn_divide:
                operator = inputText;
                refreshText(showText+operator);
                break;
            case R.id.btn_equal:
                double caculate_result = caculateFour();
                refreshOperate(String.valueOf(caculate_result));
                refreshText(showText + "=" +result);
                break;
            case R.id.btn_sqrt:
                double sqrt_result = Math.sqrt(Double.parseDouble(firstNum));
                refreshOperate(String.valueOf(sqrt_result));
                refreshText(showText + "√=" +result);
                break;
            case R.id.btn_1_x:
                double reciprocal_result = 1.0 / Double.parseDouble(firstNum);
                refreshOperate(String.valueOf(reciprocal_result));
                refreshText(showText + "/=" +result);
                break;
            default:
                //上次结果已算出
                if(result.length() > 0 && operator.equals("")){
    
    
                    clear();
                }
                if(operator.equals("")){
    
    
                    firstNum = firstNum + inputText;
                }else {
    
    
                    secondNum = secondNum + inputText;
                }
                if (showText.equals("0")&& !inputText.equals(".")){
    
    
                    refreshText(inputText);
                }else
                {
    
    
                    refreshText(showText + inputText);
                }
                break;
        }
    }
    //四则运算
    private double caculateFour() {
    
    
        switch (operator){
    
    
            case "+":
                return Double.parseDouble(firstNum) + Double.parseDouble(secondNum);
            case "-":
                return Double.parseDouble(firstNum) - Double.parseDouble(secondNum);
            case "×":
                return Double.parseDouble(firstNum) * Double.parseDouble(secondNum);
            default:
                return Double.parseDouble(firstNum) / Double.parseDouble(secondNum);
        }
    }

    private void clear() {
    
    
        refreshOperate("");
        refreshText("");
    }
    //刷新运算结果
    private void refreshOperate(String new_result){
    
    
        result = new_result;
        firstNum = result;
        secondNum = "";
        operator = "";

    }

    private void refreshText(String text){
    
    
        showText = text;
        tv_result.setText(showText);
    }



}

3. Page layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/pink"
    android:padding="5dp"
    android:orientation="horizontal"
    tools:context=".activity.CalculatorActivity">

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

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="@string/lzh_calculator"
                android:textColor="#CD7EB6EC"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/tv_result"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/white"
                android:gravity="right|bottom"
                android:lines="3"
                android:text="@string/zero"
                android:textColor="@color/black"
                android:textSize="25sp" />

            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:columnCount="4"
                android:rowCount="5">

                <Button
                    android:id="@+id/btn_cancel"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/cancel"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_divide"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/divide"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_multiply"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/multiply"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_clear"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/clear"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_seven"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/seven"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_eight"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/eight"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_nine"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/nine"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_plus"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/plus"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_four"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/four"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_five"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/five"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_six"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/six"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_minus"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/minus"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_one"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/one"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_two"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/two"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_three"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/three"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_sqrt"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/sqrt"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_1_x"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/reciprocal"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_zero"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/zero"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_dot"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/dot"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>
                <Button
                    android:id="@+id/btn_equal"
                    android:layout_width="0dp"
                    android:layout_height="75dp"
                    android:layout_columnWeight="1"
                    android:gravity="center"
                    android:text="@string/equal"
                    android:textColor="@color/black"
                    android:textSize="30sp">
                </Button>

            </GridLayout>
        </LinearLayout>
    </ScrollView>


</LinearLayout>

Guess you like

Origin blog.csdn.net/m0_46695182/article/details/127930826