本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下

话不多说,首先附上代码:

mainactivity.java

package com.example.calculator;
import androidx.appcompat.app.appcompatactivity;
import android.os.bundle;
import android.view.view;
import android.widget.edittext;
import java.util.stack;
public class mainactivity extends appcompatactivity {
    edittext edit = null;
    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        edit = findviewbyid(r.id.edit_textview);
    }
    public void btnclick(view view) {
        switch (view.getid()){
            case r.id.btn0:
                edit.append("0");
                break;
            case r.id.btn1:
                edit.append("1");
                break;
            case r.id.btn2:
                edit.append("2");
                break;
            case r.id.btn3:
                edit.append("3");
                break;
            case r.id.btn4:
                edit.append("4");
                break;
            case r.id.btn5:
                edit.append("5");
                break;
            case r.id.btn6:
                edit.append("6");
                break;
            case r.id.btn7:
                edit.append("7");
                break;
            case r.id.btn8:
                edit.append("8");
                break;
            case r.id.btn9:
                edit.append("9");
                break;
            case r.id.btnplus:
                edit.append("+");
                break;
            case r.id.btnsubtract:
                edit.append("-");
                break;
            case r.id.btnmultiply:
                edit.append("*");
                break;
            case r.id.btndivide:
                edit.append("/");
                break;
        }
    }
    public void btnequal(view view) {
        string str = edit.gettext().tostring();//1+2
        string res="";
        //java计算代码
        string result = calculate(str);
        edit.settext(result);
    }
    private static int number(char[] arr,int start,int end){
        stringbuilder buffer = new stringbuilder();
        for(int i=start;i<=end;i++){
            buffer.append(arr[i]);
        }
        return integer.parseint(buffer.tostring());
    }
    // 待实现函数,在此函数中填入答题代码
    private static int comp(string op){
        if(op.equals("+") || op.equals("-"))
            return 1;
        if(op.equals("*") || op.equals("/"))
            return 2;
        return 0;
    }
    private static string compute(integer a,integer b,string op){
        integer res;
        if(op.equals("+")) {
            res = a + b;
            return res.tostring();
        }
        if (op.equals("-")) {
            res= a - b;
            return res.tostring();
        }
        if (op.equals("*")) {
            res = a * b;
            return res.tostring();
        }
        if (op.equals("/") && b!=0) {
            res= a / b;
            return res.tostring();
        }else{
            return "error";
        }
    }
    private static string calculate(string source) {
        stack<integer> numbers=new stack<>();
        stack<string> operator=new stack<>();
        operator.push(".");
        char[] exps=source.tochararray();
        int start=0;
        if(exps[0]=='-') numbers.push(0);
        for(int j=0;j<exps.length;j++){
            if(exps[j]=='+' || exps[j]=='*' || exps[j]=='/' || exps[j]=='-'){
                if (start <= j - 1) {
                    numbers.push(number(exps,start,j-1));
                }
                start=j+1;
                while (comp(operator.peek())>=comp(string.valueof(exps[j]))){
                    integer two=numbers.peek();numbers.pop();
                    integer one=numbers.peek();numbers.pop();
                    string result=compute(one,two,operator.peek());operator.pop();
                    if (result.equals("error")) {
                        return result;
                    }
                    numbers.push(integer.parseint(result));
                }
                operator.push(string.valueof(exps[j]));
            }
        }
        numbers.push(number(exps,start,exps.length-1));
        while (operator.size()>1){
            integer two=numbers.peek();numbers.pop();
            integer one =numbers.peek();numbers.pop();
            string op=operator.peek();operator.pop();
            string value = compute(one, two, op);
            if (value.equals("error")) {
                return value;
            }
            numbers.push(integer.parseint(value));
        }
        return numbers.peek().tostring();
    }
    public void btnclear(view view) {
        edit.settext("");
    }
}

activity_main.xml

<?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:orientation="vertical"
    tools:context=".mainactivity">
    <edittext
        android:id="@+id/edit_textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <tablelayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stretchcolumns="0,1,2,3">
        <tablerow>
            <button
                android:id="@+id/btn7"
                android:layout_height="match_parent"
                android:onclick="btnclick"
                android:text="7" />
            <button
                android:id="@+id/btn8"
                android:text="8"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btn9"
                android:text="9"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btndivide"
                android:text="÷"
                android:onclick="btnclick"/>
        </tablerow>
        <tablerow>
            <button
                android:id="@+id/btn4"
                android:text="4"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btn5"
                android:text="5"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btn6"
                android:text="6"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btnmultiply"
                android:text="×"
                android:onclick="btnclick"/>
        </tablerow>
        <tablerow>
            <button
                android:id="@+id/btn1"
                android:text="1"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btn2"
                android:text="2"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btn3"
                android:text="3"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btnsubtract"
                android:text="-"
                android:onclick="btnclick"/>
        </tablerow>
        <tablerow>
            <button
                android:id="@+id/btnclear"
                android:text="c"
                android:onclick="btnclear"/>
            <button
                android:id="@+id/btn0"
                android:text="0"
                android:onclick="btnclick"/>
            <button
                android:id="@+id/btnequal"
                android:text="="
                android:onclick="btnequal"/>
            <button
                android:id="@+id/btnplus"
                android:text="+"
                android:onclick="btnclick"/>
        </tablerow>
    </tablelayout>
</linearlayout>

计算器界面:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。