本文共 5372 字,大约阅读时间需要 17 分钟。
在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/