Android studio实现简单计算器的编写

本文实例为大家分享了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>

计算器界面:

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

(0)

相关推荐

  • Android studio实现简单计算器

    本文实例为大家分享了Android studio实现简单计算器的具体代码,供大家参考,具体内容如下 需求分析 在Android studio中设计并实现一个简单的计算器,实现连续的加减乘除运算. 界面设计 采用网格GridLayout布局,设计了一个6行4列的网格,最上边是一个EditText用来显示用户输入的运算数字和运算符,以及相关的运算结果,其占4列,文本框大小为50dip:依次往下的界面分别设置了数字和运算符以及操作的按钮,各行各列的每个按钮的大小均设为26sp. 编程分析 设计了两个文

  • android studio实现计算器

    本文实例为大家分享了android studio实现计算器的具体代码,供大家参考,具体内容如下 效果图: 资源文件: color.xml <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark&

  • Android studio开发实现计算器功能

    Android移动开发实现简单计算器功能,供大家参考,具体内容如下 前言 android 开发小实验android 移动开发实现 简易计算器功能小白也能轻松上手,复制粘贴就可使用 使用工具 Android Studio 或者 intellij idea 首先体验一下结果 预览图 源码 前端页面布局 activity_calculator.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout

  • Android Studio实现简易计算器(表格布局TableLayout)

    这是一个运用网格布局来做的简易计算器,可能没有那么美观,大家可以继续完善 首先先看看成果吧 首先先建一个新的Project Calculator 然后先编写颜色背景文件 创建一个gray.xml,哪里创建呢?如图 在drawable下右击,选择new–Drawable resource file 第一个是文件名字,第二个属性可以自己选择,我们这里前两个文件选择shape,第三个文件选selector,附上颜色背景代码 gray.xml <?xml version="1.0" en

  • Android studio实现简易计算器App功能

    在Android studio实现简易计算器App并实现加减乘除功能,供大家参考,具体内容如下 结果 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="ma

  • Android Studio实现简易计算器

    如果是制作简易计算器的话是基本没有难点的,供大家参考,具体内容如下 步骤是先写好界面布局,将按钮的布局.字号颜色啥的做好,再就是设置监听器. 使用了NoTitleBar的主题 代码如下: activity_main里关于界面的代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

  • Android studio设计简易计算器

    本文实例为大家分享了Android studio设计简易计算器的具体代码,供大家参考,具体内容如下 效果显示: 第一步,简单的界面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and

  • android studio实现简单的计算器功能

    本文实例为大家分享了android studio实现计算器的具体代码,供大家参考,具体内容如下 先来个效果图: 功能: 满足加减乘除四则运算规则,有回退.清除功能. 下面的代码只是完成基本功能,若添加背景图先看看下面的方法:Android Studio App设置背景图片 1.本地准备好图片,复制它,粘贴进mipmap(drawable)文件夹. 2.在activity_main.xml里添加下面代码,注意添加位置. 3.完成,效果图: content_main.xml文件(页面布局,conte

  • Android Studio实现简单计算器APP

    一.简介:用Android Studio 实现一个简单的计算器APP,并在蓝叠模拟器中运行. 该计算器只能实现两位数字的四则运算. 二.代码 activity_main.xml   ---界面设计 <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t

  • Android Studio实现简易进制转换计算器

    本文实例为大家分享了Android Studio实现简易进制转换计算器的具体代码,供大家参考,具体内容如下 1.问题描述 设计并实现一个数制转换器,能够对输入的任- -进制类型的数值转换为指定的数制类型的数值.必须实现的数制类型有二进制.八进制.十进制和十六进制四种. 2.基本要求 (1)使用Spinner 控件,列出四种数制类型,即:二进制.八进制.十进制和十六进制;(2)“数值”输入框,不使用Android系统提供的输入面板,进行数值输入;且只能是整数数值; 布局代码: <?xml vers

随机推荐