千家信息网

Android Studio怎么实现简易计算器App

发表于:2025-01-15 作者:千家信息网编辑
千家信息网最后更新 2025年01月15日,本篇内容主要讲解"Android Studio怎么实现简易计算器App",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android Studio怎么实现简
千家信息网最后更新 2025年01月15日Android Studio怎么实现简易计算器App

本篇内容主要讲解"Android Studio怎么实现简易计算器App",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android Studio怎么实现简易计算器App"吧!

效果演示

布局文件

                                                

Java文件

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.Toast;import androidx.annotation.Nullable;public class MainActivity extends Activity {    private TextView tv1;    private TextView tv2;    private StringBuilder viewStr;    private int index = 0;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main_calc);        tv1 = (TextView) findViewById(R.id.mini);        tv2 = (TextView) findViewById(R.id.max);        viewStr = new StringBuilder();        index = 0;    }    //加减乘除、求余简单运算方法    public String calc(StringBuilder strB) {        String allS = strB.toString();        String[] asmd = {"+","-","×","÷","%"};        int x = 0; int y = 0;        String result = null;        for (int i = 0; i < 5; i ++) {            int inde = strB.indexOf(asmd[i]);            if (inde > 0) {                String a = allS.split(asmd[i])[0];                String b = allS.split(asmd[i])[1];                if (i == 0) {result = String.valueOf(Integer.parseInt(a) + Integer.parseInt(b));}                if (i == 1) {result = String.valueOf(Integer.parseInt(a) - Integer.parseInt(b));}                if (i == 2) {result = String.valueOf(Integer.parseInt(a) * Integer.parseInt(b));}                if (i == 3) {                    if (Integer.parseInt(b) == 0) {                        Toast.makeText(this,"0不能为除数",Toast.LENGTH_SHORT).show();                        result = String.valueOf(Integer.parseInt(a));                    }else {                        result = String.valueOf(Integer.parseInt(a) / Integer.parseInt(b));                    }                }                if (i == 4) {result = String.valueOf(Integer.parseInt(a) % Integer.parseInt(b));}            }        }        return result;    }    //数字按钮事件    public void number_0(View view) { viewStr.append("0"); index ++ ; tv2.setText(viewStr); }    public void number_1(View view) { viewStr.append("1"); index ++ ; tv2.setText(viewStr); }    public void number_2(View view) { viewStr.append("2"); index ++ ; tv2.setText(viewStr); }    public void number_3(View view) { viewStr.append("3"); index ++ ; tv2.setText(viewStr); }    public void number_4(View view) { viewStr.append("4"); index ++ ; tv2.setText(viewStr); }    public void number_5(View view) { viewStr.append("5"); index ++ ; tv2.setText(viewStr); }    public void number_6(View view) { viewStr.append("6"); index ++ ; tv2.setText(viewStr); }    public void number_7(View view) { viewStr.append("7"); index ++ ; tv2.setText(viewStr); }    public void number_8(View view) { viewStr.append("8"); index ++ ; tv2.setText(viewStr); }    public void number_9(View view) { viewStr.append("9"); index ++ ; tv2.setText(viewStr); }    //回退按钮事件    public void backsprce(View view) {        if (viewStr.length() == 0) return;        index = viewStr.length();        viewStr.deleteCharAt(--index); tv2.setText(viewStr);    }    //符号改变按钮事件    public void change(View view) {        String allS = viewStr.toString();        String[] asmd = {"+","-","×","÷","%"};        int inde = 0;        String a = null;    //保存字符串中运算符部分        String b = null;    //保存字符串中数字部分        for (int i = 0; i < 5; i ++) {            inde = viewStr.indexOf(asmd[i]);            if (inde != -1) {                a = asmd[i];                break;            }        }        //A 字符形 改变 A 正负值        if (inde == -1) {            clearc(view);            int c = - Integer.parseInt(allS);            viewStr.append(String.valueOf(c));            index = String.valueOf(c).length();            tv2.setText(viewStr);        }        //A + 字符串形 改变 A 正负值 暂时无法实现,待后续优化        if (inde == index - 1) {            return;//            clearc(view);//            int c = - Integer.valueOf(allS.split(a)[0]);//            viewStr.append(String.valueOf(c));//            index = String.valueOf(c).length();//            tv2.setText(viewStr);        }        //A + B 字符串形 改变 B 正负值        if (inde >= 0 && inde < index) {            clearc(view);            b = allS.split(a)[0];            int c = - Integer.parseInt(allS.split(a)[1]);            viewStr.append(b).append(a).append(String.valueOf(c));            index = String.valueOf(c).length();            tv2.setText(viewStr);        }    }    //清空按钮事件    public void clearc(View view) {        StringBuilder temp = new StringBuilder();        viewStr = temp.append("");        tv2.setText(viewStr);        index = 0;    }    public void clearce(View view) {        StringBuilder temp = new StringBuilder();        viewStr = temp.append("");        tv1.setText("");        tv2.setText(viewStr);        index = 0;    }    //等于按钮事件    public void equal(View view) {        String[] asmd = {"+","-","×","÷","%"};        StringBuilder temp = new StringBuilder();        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > 0 && inde != index-1) {                tv1.setText(calc(viewStr));                String a = calc(viewStr);                viewStr = temp.append(a);                tv2.setText(viewStr);                index = viewStr.length();                return;            }else if (inde > 0 && inde == index-1) {                viewStr.deleteCharAt(--index);                tv1.setText(viewStr);                tv2.setText(viewStr);            }        }        tv1.setText(viewStr);        tv2.setText(viewStr);    }    //加减乘除按钮事件    public void addition(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        StringBuilder temp = new StringBuilder();        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                tv1.setText(calc(viewStr));                String a = calc(viewStr);                viewStr = temp.append(a).append('+');                tv2.setText(viewStr);                index = viewStr.length();                return;            }        }        char a = viewStr.charAt(index-1);        if (a == '+') { return; }        if (a == '-' || a == '×' || a == '÷' || a == '%') {            viewStr.setCharAt(index-1,'+');        }else {            viewStr.append("+");            index ++ ;        }        tv2.setText(viewStr);    }    public void subtraction(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        StringBuilder temp = new StringBuilder();        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                tv1.setText(calc(viewStr));                String a = calc(viewStr);                viewStr = temp.append(a).append('-');                tv2.setText(viewStr);                index = viewStr.length();                return;            }        }        char a = viewStr.charAt(index-1);        if (a == '-') { return; }        if (a == '+' || a == '×' || a == '÷' || a == '%') {            viewStr.setCharAt(index-1,'-');        }else {            viewStr.append("-");            index ++ ;        }        tv2.setText(viewStr);    }    public void multiplication(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        StringBuilder temp = new StringBuilder();        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                tv1.setText(calc(viewStr));                String a = calc(viewStr);                viewStr = temp.append(a).append('×');                tv2.setText(viewStr);                index = viewStr.length();                return;            }        }        char a = viewStr.charAt(index-1);        if (a == '×') { return; }        if (a == '+' || a == '-' || a == '÷' || a == '%') {            viewStr.setCharAt(index-1,'×');        }else {            viewStr.append("×");            index ++ ;        }        tv2.setText(viewStr);    }    public void division(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        StringBuilder temp = new StringBuilder();        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                tv1.setText(calc(viewStr));                String a = calc(viewStr);                viewStr = temp.append(a).append('÷');                tv2.setText(viewStr);                index = viewStr.length();                return;            }        }        char a = viewStr.charAt(index-1);        if (a == '÷') { return; }        if (a == '+' || a == '-' || a == '×' || a == '%') {            viewStr.setCharAt(index-1,'÷');        }else {            viewStr.append("÷");            index ++ ;        }        tv2.setText(viewStr);    }    //求余按钮事件    public void surplus(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        StringBuilder temp = new StringBuilder();        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > 0 && viewStr.charAt(index-1) >= '0' && viewStr.charAt(index-1) <= '9') {                tv1.setText(calc(viewStr));                String a = calc(viewStr);                viewStr = temp.append(a).append('%');                tv2.setText(viewStr);                index = viewStr.length();                return;            }        }        char a = viewStr.charAt(index-1);        if (a == '%') { return; }        if (a == '+' || a == '-' || a == '×' || a == '÷') {            viewStr.setCharAt(index-1,'%');        }else {            viewStr.append("%");            index ++ ;        }        tv2.setText(viewStr);    }    //求倒数按钮事件    public void reciprocal(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > -1) { return; }        }        int a = Integer.parseInt(viewStr.toString().trim());        if (a == 0) {            Toast.makeText(this,"0不能为除数",Toast.LENGTH_SHORT).show();            return;        }        clearc(view);        viewStr.append(1/a);        index = String.valueOf(1/a).length();        tv2.setText(viewStr);    }    //平方按钮事件    public void square(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > -1) { return; }        }        int a = Integer.parseInt(viewStr.toString().trim());        clearc(view);        viewStr.append(a*a);        index = String.valueOf(a*a).length();        tv2.setText(viewStr);    }    //开平方按钮事件    public void squareroot(View view) {        if (viewStr.length() == 0) return;        String[] asmd = {"+","-","×","÷","%"};        for (int i = 0; i < 5; i ++) {            int inde = viewStr.indexOf(asmd[i]);            if (inde > -1) { return; }        }        int a = Integer.parseInt(viewStr.toString().trim());        clearc(view);        viewStr.append((int)Math.sqrt(a));        index = String.valueOf((int)Math.sqrt(a)).length();        tv2.setText(viewStr);    }}

到此,相信大家对"Android Studio怎么实现简易计算器App"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

事件 按钮 简易 计算器 加减乘除 内容 字符 字符串 数字 文件 方法 部分 除数 学习 实用 更深 兴趣 实用性 实际 布局 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑞亭网络技术 校园网络安全实现分析 游戏服务器内存满了怎么办 贵州维婷软件开发有限公司 清华同方软件开发 互联网科技可以享受财政扶持吗 数据库连接池定期验证 java网络安全检测编程 江苏 网络安全 工会 长春市宏程网络技术怎么样 如何查看一个数据库的字 3级网络技术知识点 中国网络安全教程视频 cc 编程软件开发 普陀区个性化网络技术厂家现货 江苏优势软件开发厂家报价 青稞网络技术有限公司 h3c 服务器pe下看不到硬盘 关于网络安全教育的古诗 中国最强网络技术学校 汽车网络技术发展趋势是什么 数据库还原报错31640 国外虚拟代理服务器 宁波市软件开发人才 数据库什么是变量名和变量值 丛林法则数据库出错是怎么回事 服务器有钽电容吗 上海网络安全工程师培训班哪家好 h3c 服务器pe下看不到硬盘 南阳网络工程师与网络安全工程师
0