android 简易计算器、可自行扩展
来源:互联网 发布:超级玛丽乱入windows 编辑:程序博客网 时间:2024/06/10 14:43
如果你的由于项目中需要用到计算器,这个简易计算器可以让你少走一点弯路、 可自行扩展 图片效果、代码如下
activity代码:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity {
private TextView editText,textRelse;//输入框、计算结果
private String opt = "";//操作符
private String formula = "";//公式
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (TextView)findViewById(R.id.editText1);
textRelse = (TextView)findViewById(R.id.textView1);
textRelse.setVisibility(View.GONE);
}
public void btnClick(View v) {
String edStr = editText.getText().toString();
switch (v.getId()) {
case R.id.button0:
inputNumber("0");
break;
case R.id.button00:
if(notBlank(editText.getText().toString()) && notBlank(formula) && !formula.equals("0")){
inputNumber("00");
}else {
if(notBlank(textRelse.getText().toString()) && notBlank(formula) && !formula.equals("0")){
inputNumber("00");
}
}
break;
case R.id.button1:
inputNumber("1");
break;
case R.id.button2:
inputNumber("2");
break;
case R.id.button3:
inputNumber("3");
break;
case R.id.button4:
inputNumber("4");
break;
case R.id.button5:
inputNumber("5");
break;
case R.id.button6:
inputNumber("6");
break;
case R.id.button7:
inputNumber("7");
break;
case R.id.button8:
inputNumber("8");
break;
case R.id.button9:
inputNumber("9");
break;
case R.id.button99:
//.小数点
if(edStr.equals("-")){
break;
}
//判断字符串中是否已经包含了小数点,如果有就什么也不做
if(edStr.indexOf(".") != -1) {
} else {
//如果没有小数点
if(edStr.equals("0")){
//如果开始为0,
editText.setText(("0" + ".").toString());
formula = formula +".";
}else if(edStr.equals("")){
//如果初时显示为空,就什么也不做
}else{
editText.setText(edStr + ".");
formula = formula +".";
}
if(textRelse.getVisibility() == View.VISIBLE){
if(notBlank(formula) && !formula.contains(".")){
textRelse.setText(textRelse.getText() + ".");
formula = formula +".";
}else {
}
}else {
}
}
break;
case R.id.button_except:
//"/
inputOperator("÷");
break;
case R.id.button_ride:
//*
inputOperator("×");
break;
case R.id.button_reduce:
//-
inputOperator("-");
break;
case R.id.button_plus:
//+
inputOperator("+");
break;
case R.id.button_c:
//CE
textRelse.setVisibility(View.GONE);
formula = "";
opt= "";
if(edStr.length() > 0)
editText.setText("");
textRelse.setText("");
break;
case R.id.button_cc:
//cc
if(notBlank(formula)){
formula = formula.substring(0, formula.length() - 1);
}
if(notBlank(opt)){
opt = opt.substring(0,opt.length() - 1);
}
if(textRelse.getVisibility() == View.VISIBLE){
String str =textRelse.getText().toString();
editText.setText("");
if(str.length() > 0){
textRelse.setText(str.substring(0, str.length() - 1));
}
if(isContains(textRelse.getText().toString())){
}else {
editText.setText(textRelse.getText().toString());
textRelse.setVisibility(View.GONE);
}
}else {
String str =editText.getText().toString();
if(str.length() > 0){
editText.setText(str.substring(0, str.length() - 1));
}
if(isContains(textRelse.getText().toString())){
}else {
editText.setText(editText.getText().toString());
textRelse.setVisibility(View.GONE);
opt= "";
}
}
break;
case R.id.button_result:
//结果=
if(isContains2(textRelse.getText().toString())){
resultStr();
}
break;
}
}
private void inputNumber(String obj){
if(isContains(textRelse.getText().toString())){
opt = "";
editText.setText("");
String str2 = textRelse.getText().toString();
StringBuilder sb = new StringBuilder(str2);
if(notBlank(formula) && formula.equals("0")){
formula = obj;
textRelse.setText(sb.deleteCharAt(sb.length() - 1)+obj);
}else if(notBlank(formula) && formula.equals("00")){
formula = obj;
textRelse.setText(sb.deleteCharAt(sb.length() - 2)+obj);
}else {
formula = formula+obj;
textRelse.setText(textRelse.getText().toString()+obj);
}
}else {
String str = editText.getText().toString();
String str2 = textRelse.getText().toString();
StringBuilder sb = new StringBuilder(str);
StringBuilder sb2 = new StringBuilder(str2);
if(notBlank(formula) && formula.equals("0")){
editText.setText(sb.deleteCharAt(sb.length() - 1)+obj);
textRelse.setText(sb2.deleteCharAt(sb2.length() - 1)+obj);
formula = obj;
}else if(notBlank(formula) && formula.equals("00")){
editText.setText(sb.substring(0,sb.length()-2) + obj);
textRelse.setText(sb2.substring(0,sb2.length()-2) +obj);
formula = obj;
}else {
editText.setText(str + obj);
textRelse.setText(textRelse.getText().toString()+obj);
formula = formula+obj;
}
}
}
//点击运算符操作
private void inputOperator(String operator){
if(notBlank(formula) && formula.substring(formula.length() -1).equals(".")){
return;
}
String edText2 = editText.getText().toString();
String edText = textRelse.getText().toString();
if(notBlank(edText2) && edText2.length() == 1 && edText2.subSequence(0, 1).equals("-")){
return;
}
formula = "";
if(notBlank(opt) && opt.length() == 1 && operator.equals("-")){
opt= opt+operator;
}else {
if(opt.length() == 2){
textRelse.setText(edText.substring(0,edText.length()-2) + operator);
opt = operator;
return;
}
opt = operator;
}
if(notBlank(edText) && isContains2(edText.substring(edText.length()-1))){
editText.setText("");
textRelse.setText(edText.substring(0,edText.length()-1) + opt);
}else {
if(notBlank(edText) || notBlank(edText2)){
if(textRelse.getVisibility() == View.GONE){
textRelse.setText(edText2 + opt);
}else {
textRelse.setText(edText + opt);
}
textRelse.setVisibility(View.VISIBLE);
editText.setText("");
}else {
if(operator.equals("-")){
editText.setText(opt);
}
opt= "";
}
}
}
private void resultStr(){
if(notBlank(formula) && formula.substring(formula.length() -1).equals(".")){
return;
}
String edText = textRelse.getText().toString();
if(notBlank(edText) && isContains2(edText.substring(edText.length()-1))){
return;
}
formula = "";
opt= "";
String calcu = CalculatorIn.calcBracket(textRelse.getText().toString())+"";
if(calcu.contains("Infinity") || calcu.contains("-Infinity") ){
Toast.makeText(this,"被除数不能为“0”或“-0”",Toast.LENGTH_SHORT).show();
return;
}
editText.setText(CalculatorIn.calcBracket(textRelse.getText().toString())+"");
BigDecimal bg =new BigDecimal((String) editText.getText());
if(editText.getText().toString().contains("E")){
editText.setText(DecimalFormat2(bg) + "");
}else {
editText.setText(DecimalFormat2(bg) + "");
}
}
private boolean isContains(String obj){
if(notBlank(obj) && (obj.substring(1,obj.length()).contains("+") || obj.substring(1,obj.length()).contains("-")|| obj.substring(1,obj.length()).contains("×")|| obj.substring(1,obj.length()).contains("÷"))){
return true;
}else {
return false;
}
}
private boolean isContains2(String obj){
if(obj.contains("+") || obj.contains("-")|| obj.contains("×")|| obj.contains("÷")){
return true;
}else {
return false;
}
}
public boolean notBlank(String str) {
return str != null && !"".equals(str.trim())&& !str.equals("null");
}
//保留两位小数
public String DecimalFormat2(BigDecimal price) {
DecimalFormat fnum = new DecimalFormat("##0.00");
String dd = fnum.format(price);
return dd;
}
}
demo下载地址:
http://download.csdn.net/download/u014105991/10129006
demo地址
阅读全文
0 0
- android 简易计算器、可自行扩展
- Android文件目录选择器(可自行扩展)
- Android文件目录选择器(可自行扩展)
- Android简易计算器
- android 简易的计算器
- android简易计算器
- android简易计算器总结
- Android应用---简易计算器
- Android简易计算器
- 【源码】Android简易计算器
- 简易Android计算器
- Android简易计算器
- android 简易计算器
- Android 简易计算器程序
- Android 简易计算器实现
- Android简易计算器
- Android 简易计算器
- android及其简易的计算器。。。
- 自制游戏 data.json
- 将常用操作快捷图标添加到Word2013中的快速启动栏
- 软件调试笔记7
- css动画
- Java学习12 GUI程序设计(AWT)
- android 简易计算器、可自行扩展
- mysql group replication的安装搭建
- 【C++】函数概要
- 13-1ArrayList集合
- GtkD开发之路
- (CodeForces 883A) The Meaningless Game 二分答案思路+骚操作
- easyui动态设置required
- 搭建asp网站遇到的一些问题
- 字体、背景图片样式