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

你可能感兴趣的文章
mt_rand
查看>>
mysql -存储过程
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>