android 简单的计算器
来源:互联网 发布:福昕pdf软件套装 编辑:程序博客网 时间:2024/06/05 08:12
package com.example.calculator; import java.util.Arrays; import bsh.EvalError;import bsh.Interpreter;import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText; /** * @author 铂金小龟 */public class CalculatorActivity extends Activity implements OnClickListener{ EditText rsText = null; //显示器 boolean isClear = false; //用于是否显示器需要被清理 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.calculator); //fun 功能按钮 rsText = (EditText)findViewById(R.id.rsText); Button btnDel = (Button)findViewById(R.id.delete); Button btnPlu = (Button)findViewById(R.id.plus); Button btnMin = (Button)findViewById(R.id.minus); Button btnMul = (Button)findViewById(R.id.multiply); Button btnDiv = (Button)findViewById(R.id.division); Button btnEqu = (Button)findViewById(R.id.equ); Button btnTono = (Button)findViewById(R.id.tonone); Button btnLeft = (Button)findViewById(R.id.left); Button btnRight = (Button)findViewById(R.id.right); //num 数字按钮 Button num0 = (Button)findViewById(R.id.num0); Button num1 = (Button)findViewById(R.id.num1); Button num2 = (Button)findViewById(R.id.num2); Button num3 = (Button)findViewById(R.id.num3); Button num4 = (Button)findViewById(R.id.num4); Button num5 = (Button)findViewById(R.id.num5); Button num6 = (Button)findViewById(R.id.num6); Button num7 = (Button)findViewById(R.id.num7); Button num8 = (Button)findViewById(R.id.num8); Button num9 = (Button)findViewById(R.id.num9); Button dot = (Button)findViewById(R.id.dot); //listener btnTono.setOnClickListener(this); btnLeft.setOnClickListener(this); btnRight.setOnClickListener(this); btnDel.setOnClickListener(this); btnPlu.setOnClickListener(this); btnMin.setOnClickListener(this); btnMul.setOnClickListener(this); btnDiv.setOnClickListener(this); btnEqu.setOnClickListener(this); num0.setOnClickListener(this); num1.setOnClickListener(this); num2.setOnClickListener(this); num3.setOnClickListener(this); num4.setOnClickListener(this); num5.setOnClickListener(this); num6.setOnClickListener(this); num7.setOnClickListener(this); num8.setOnClickListener(this); num9.setOnClickListener(this); dot.setOnClickListener(this); } @Override public void onClick(View e) { Button btn = (Button)e; String exp = rsText.getText().toString(); if(isClear &&( btn.getText().equals("0") ||btn.getText().equals("1") ||btn.getText().equals("2") ||btn.getText().equals("3") ||btn.getText().equals("4") ||btn.getText().equals("5") ||btn.getText().equals("6") ||btn.getText().equals("7") ||btn.getText().equals("8") ||btn.getText().equals("9") ||btn.getText().equals(".")) ||btn.getText().equals("算数公式错误")){ rsText.setText(""); isClear = false; } if(btn.getText().equals("C")){ rsText.setText(""); }else if(btn.getText().equals("清除")){ if(isEmpty(exp)) return; else rsText.setText(exp.substring(0, exp.length()-1)); }else if(btn.getText().equals("=")){ if(isEmpty(exp)) return; exp = exp.replaceAll("×", "*"); exp = exp.replaceAll("÷", "/"); rsText.setText(getRs(exp)); isClear = false; }else{ rsText.setText(rsText.getText()+""+btn.getText()); isClear = false; } //操作完成后始终保持光标在最后一位 rsText.setSelection(rsText.getText().length()); } /*** * @param exp 算数表达式 * @return 根据表达式返回结果 */ private String getRs(String exp){ Interpreter bsh = new Interpreter(); Number result = null; try { exp = filterExp(exp); result = (Number)bsh.eval(exp); } catch (EvalError e) { e.printStackTrace(); isClear = true; return "算数公式错误"; } exp = result.doubleValue()+""; if(exp.endsWith(".0")) exp = exp.substring(0, exp.indexOf(".0")); return exp; } /** * 因为计算过程中,全程需要有小数参与,所以需要过滤一下 * @param exp 算数表达式 * @return */ private String filterExp(String exp) { String num[] = exp.split(""); String temp = null; int begin=0,end=0; for (int i = 1; i < num.length; i++) { temp = num[i]; if(temp.matches("[+-/()*]")){ if(temp.equals(".")) continue; end = i - 1; temp = exp.substring(begin, end); if(temp.trim().length() > 0 && temp.indexOf(".")<0) num[i-1] = num[i-1]+".0"; begin = end + 1; } } return Arrays.toString(num).replaceAll("[\\[\\], ]", ""); } /*** * @param str * @return 字符串非空验证 */ private boolean isEmpty(String str){ return (str==null || str.trim().length()==0); } }
阅读全文
0 0
- 简单的android计算器
- 简单的android计算器
- android 简单的计算器
- android开发简单的计算器
- android开发简单的计算器
- Android---9---简单的计算器
- Android 简单计算器的实现
- Android实现简单的计算器
- 简单android计算器的实现
- Android简单的加法计算器
- android的简单计算器的实现
- android 简单的计算器的源码
- Android制作的简单的计算器
- 带有下拉列表的Android简单计算器
- Android编程学习:简单的计算器程序
- Android 一个简单的计算器APP
- 一款简单的Android计算器源代码
- android打造的最简单计算器界面
- Java多线程面试问题集锦
- Linux进程创建fork()函数
- rocketmq的发送方法
- Python正则表达式—re模块接口
- codevs2801 LOL-盖伦的蹲草计划(我好像写错了……)//(题目有误,.为草地,*为平地
- android 简单的计算器
- mos上精彩的文章合集
- Spark Streaming场景应用-Kafka数据读取方式
- docker 搭建私有仓库(对于所有人)
- 一些免费的api接口
- 注解
- 1053. 住房空置率 (20)
- C语言笔记
- 判断是否保持函数依赖