博客
关于我
最简单 最快速 地在Andriod studio上实现一个简易计算器 【eval () 函数】 ! ! !
阅读量:283 次
发布时间:2019-03-01

本文共 5251 字,大约阅读时间需要 17 分钟。

在Eclipse中使用JavaScript实现字符串运算

使用Eclipse中的JavaScript引擎实现字符串表达式计算

在Eclipse中,通过JavaScript引擎轻松实现字符串表达式的运算。我们可以利用eval()函数来执行JavaScript代码,从而实现复杂的数学运算。

安卓计算器开发实例

一、依赖管理

build.gradle中添加必要的依赖:

implementation 'io.apisense:rhino-android:1.1.1'

二、布局配置

activity_main.xml中定义布局:

三、功能实现

MainActivity.java中,通过JavaScript引擎实现计算器功能:

package com.example.cal;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;public class MainActivity extends AppCompatActivity {    private Button btnlim, btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btnp, btnadd, btnsub, btnmul, btndiv, btnequ;    private TextView in;    private String s = "", result = "";    ScriptEngine j = new ScriptEngineManager().getEngineByName("javascript");    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        in = (TextView) findViewById(R.id.input);        btnlim = (Button) findViewById(R.id.buttoneliminate);        btn0 = (Button) findViewById(R.id.button0);        btn1 = (Button) findViewById(R.id.button1);        btn2 = (Button) findViewById(R.id.button2);        btn3 = (Button) findViewById(R.id.button3);        btn4 = (Button) findViewById(R.id.button4);        btn5 = (Button) findViewById(R.id.button5);        btn6 = (Button) findViewById(R.id.button6);        btn7 = (Button) findViewById(R.id.button7);        btn8 = (Button) findViewById(R.id.button8);        btn9 = (Button) findViewById(R.id.button9);        btnp = (Button) findViewById(R.id.buttonpoint);        btnadd = (Button) findViewById(R.id.buttonadd);        btnsub = (Button) findViewById(R.id.buttonsub);        btnmul = (Button) findViewById(R.id.buttonmul);        btndiv = (Button) findViewById(R.id.buttondiv);        btnequ = (Button) findViewById(R.id.buttonequal);        btnlim.setOnClickListener(new mclick());        btn0.setOnClickListener(new mclick());        btn1.setOnClickListener(new mclick());        btn2.setOnClickListener(new mclick());        btn3.setOnClickListener(new mclick());        btn4.setOnClickListener(new mclick());        btn5.setOnClickListener(new mclick());        btn6.setOnClickListener(new mclick());        btn7.setOnClickListener(new mclick());        btn8.setOnClickListener(new mclick());        btn9.setOnClickListener(new mclick());        btnp.setOnClickListener(new mclick());        btnadd.setOnClickListener(new mclick());        btnsub.setOnClickListener(new mclick());        btnmul.setOnClickListener(new mclick());        btndiv.setOnClickListener(new mclick());        btnequ.setOnClickListener(new mclick());    }    class mclick implements OnClickListener {        public void onClick(View v) {            if (v == btnlim) {                s = "";            } else if (v == btnequ) {                try {                    String t = s;                    result = j.eval(t).toString();                    s += "=" + result;                    in.setText(s);                    s = result;                } catch (ScriptException e) {                    e.printStackTrace();                }            } else {                switch (v.getId()) {                    case R.id.button0:                        s += "0";                        break;                    case R.id.button1:                        s += "1";                        break;                    case R.id.button2:                        s += "2";                        break;                    case R.id.button3:                        s += "3";                        break;                    case R.id.button4:                        s += "4";                        break;                    case R.id.button5:                        s += "5";                        break;                    case R.id.button6:                        s += "6";                        break;                    case R.id.button7:                        s += "7";                        break;                    case R.id.button8:                        s += "8";                        break;                    case R.id.button9:                        s += "9";                        break;                    case R.id.buttonpoint:                        s += ".";                        break;                    case R.id.buttonadd:                        s += "+";                        break;                    case R.id.buttonsub:                        s += "-";                        break;                    case R.id.buttonmul:                        s += "*";                        break;                    case R.id.buttondiv:                        s += "/";                        break;                }                in.setText(s);            }        }    }}

通过以上代码,我们可以在Android Studio中轻松实现一个功能简单的计算器。用户可以通过点击数字和操作符来构建表达式,点击"="按钮即可查看计算结果。

转载地址:http://qaao.baihongyu.com/

你可能感兴趣的文章
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>