java安卓编程计算器_基本四则运算的简单计算器Android开发之Java文件

packagecom.example.calculator;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.TextView;

importandroid.text.method.ScrollingMovementMethod;

importandroid.widget.Toast;

importandroid.util.Log;

importjava.math.BigDecimal;

public classCalculatorActivity extendsAppCompatActivity implementsView.OnClickListener {

//添加控件的声明private final staticString TAG= "CalculatorActivity";

privateTextView tv_result;

privateButton btn_clear;

privateButton btn_divide;

privateButton btn_multiply;

privateButton btn_cancel;

privateButton btn_seven;

privateButton btn_eight;

privateButton btn_nine;

privateButton btn_plus;

privateButton btn_four;

privateButton btn_five;

privateButton btn_six;

privateButton btn_minus;

privateButton btn_one;

privateButton btn_two;

privateButton btn_three;

privateButton ib_sqrt;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_calculator);

tv_result= (TextView) findViewById(R.id.tv_result);

tv_result.setMovementMethod(newScrollingMovementMethod());

findViewById(R.id.btn_cancel).setOnClickListener(this);

findViewById(R.id.btn_divide).setOnClickListener(this);

findViewById(R.id.btn_multiply).setOnClickListener(this);

findViewById(R.id.btn_clear).setOnClickListener(this);

findViewById(R.id.btn_seven).setOnClickListener(this);

findViewById(R.id.btn_eight).setOnClickListener(this);

findViewById(R.id.btn_nine).setOnClickListener(this);

findViewById(R.id.btn_plus).setOnClickListener(this);

findViewById(R.id.btn_four).setOnClickListener(this);

findViewById(R.id.btn_five).setOnClickListener(this);

findViewById(R.id.btn_six).setOnClickListener(this);

findViewById(R.id.btn_minus).setOnClickListener(this);

findViewById(R.id.btn_one).setOnClickListener(this);

findViewById(R.id.btn_two).setOnClickListener(this);

findViewById(R.id.btn_three).setOnClickListener(this);

findViewById(R.id.btn_zero).setOnClickListener(this);

findViewById(R.id.btn_dot).setOnClickListener(this);

findViewById(R.id.btn_equal).setOnClickListener(this);

findViewById(R.id.ib_sqrt).setOnClickListener(this);

}

@Overridepublic voidonClick(View v) {

intresid = v.getId();

String inputText;

if(resid == R.id.ib_sqrt) {

inputText = "√";

} else{

inputText = ((TextView) v).getText().toString();

}

Log.d(TAG, "resid="+resid+",inputText="+inputText);

if(resid == R.id.btn_clear) {

clear("");

} else if(resid == R.id.btn_cancel) {

if(operator.equals("") == true) {

if(firstNum.length() == 1) {

firstNum= "0";

} else if(firstNum.length() > 0) {

firstNum= firstNum.substring(0, firstNum.length() - 1);

} else{

Toast.makeText(this, "没有可取消的数字了", Toast.LENGTH_SHORT).show();

return;

}

showText= firstNum;

tv_result.setText(showText);

} else{

if(nextNum.length() == 1) {

nextNum= "";

} else if(nextNum.length() > 0) {

nextNum= nextNum.substring(0, nextNum.length() - 1);

} else{

Toast.makeText(this, "没有可取消的数字了", Toast.LENGTH_SHORT).show();

return;

}

showText= showText.substring(0, showText.length() - 1);

tv_result.setText(showText);

}

} else if(resid == R.id.btn_equal) {

if(operator.length() == 0|| operator.equals("=") == true) {

Toast.makeText(this, "请输入运算符", Toast.LENGTH_SHORT).show();

return;

} else if(nextNum.length() <= 0) {

Toast.makeText(this, "请输入数字", Toast.LENGTH_SHORT).show();

return;

}

if(caculate() == true) {

operator= inputText;

showText= showText+ "="+ result;

tv_result.setText(showText);

} else{

return;

}

} else if(resid == R.id.btn_plus|| resid == R.id.btn_minus|| resid == R.id.btn_multiply|| resid == R.id.btn_divide) {

if(firstNum.length() <= 0) {

Toast.makeText(this, "请输入数字", Toast.LENGTH_SHORT).show();

return;

}

if(operator.length() == 0|| operator.equals("=") == true|| operator.equals("√") == true) {

operator= inputText;// 操作符showText= showText+ operator;

tv_result.setText(showText);

} else{

Toast.makeText(this, "请输入数字", Toast.LENGTH_SHORT).show();

return;

}

} else if(resid == R.id.ib_sqrt) {

if(firstNum.length() <= 0) {

Toast.makeText(this, "请输入数字", Toast.LENGTH_SHORT).show();

return;

}

if(Double.parseDouble(firstNum) < 0) {

Toast.makeText(this, "开根号的数值不能小于0", Toast.LENGTH_SHORT).show();

return;

}

result= String.valueOf(Math.sqrt(Double.parseDouble(firstNum)));

firstNum= result;

nextNum= "";

operator= inputText;

showText= showText+ "√="+ result;

tv_result.setText(showText);

Log.d(TAG, "result="+result+",firstNum="+firstNum+",operator="+operator);

} else{

if(operator.equals("=") == true) {

operator= "";

firstNum= "";

showText= "";

}

if(resid == R.id.btn_dot) {

inputText = ".";

}

if(operator.equals("") == true) {

firstNum= firstNum+ inputText;

} else{

nextNum= nextNum+ inputText;

}

showText= showText+ inputText;

tv_result.setText(showText);

}

return;

}

privateString operator= ""; // 操作符privateString firstNum= ""; // 前一个操作数privateString nextNum= ""; // 后一个操作数privateString result= ""; // 当前的计算结果privateString showText= ""; // 显示的文本内容// 开始加减乘除四则运算private booleancaculate() {

if(operator.equals("+") == true) {

result= String.valueOf(Arith.add(firstNum, nextNum));

} else if(operator.equals("-") == true) {

result= String.valueOf(Arith.sub(firstNum, nextNum));

} else if(operator.equals("×") == true) {

result= String.valueOf(Arith.mul(firstNum, nextNum));

} else if(operator.equals("÷") == true) {

if("0".equals(nextNum)) {

Toast.makeText(this, "被除数不能为零", Toast.LENGTH_SHORT).show();

return false;

} else{

result= String.valueOf(Arith.div(firstNum, nextNum));

}

}

firstNum= result;

nextNum= "";

return true;

}

// 清空并初始化private voidclear(String text) {

showText= text;

tv_result.setText(showText);

operator= "";

firstNum= "";

nextNum= "";

result= "";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值