博客
关于我
最简单 最快速 地在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/

你可能感兴趣的文章
Nginx代理websocket配置(解决websocket异常断开连接tcp连接不断问题)
查看>>
Nginx代理初探
查看>>
nginx代理地图服务--离线部署地图服务(地图数据篇.4)
查看>>
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>
Nginx代理解决跨域问题(导致图片只能预览不能下载)
查看>>
Nginx代理配置详解
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx反向代理
查看>>
nginx反向代理、文件批量改名及统计ip访问量等精髓总结
查看>>
Nginx反向代理与正向代理配置
查看>>
Nginx反向代理及负载均衡实现过程部署
查看>>
Nginx反向代理是什么意思?如何配置Nginx反向代理?
查看>>
nginx反向代理解决跨域问题,使本地调试更方便
查看>>
Nginx反向代理配置
查看>>
Nginx启动SSL功能,并进行功能优化,你看这个就足够了
查看>>
nginx启动脚本
查看>>
Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
查看>>
Nginx在Windows下载安装启动与配置前后端请求代理
查看>>