一、啥也不说,先看效果
二、再来看一下目录结构吧:
三、源码:
.java文件
package com.kjgym.mycalculatorv10;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener {
private EditText EV_Result; // 结果框
private double currentResult = 0.0; // 存储数字及结果
private boolean firstDigit = true; // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
private String operator = "="; // 当前运算的运算符
private boolean operateValidFlag = true; // 操作是否合法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
// 控件初始化及添加监听事件
this.init();
}
/**
@Override
public void onClick(View v) {
String pre = ((Button) v).getText().toString();
Log.i("TAG", pre);
switch (v.getId()) {
case R.id.Btn_Back:
setBtn_Back();
break;
case R.id.Btn_C:
setBtn_C();
break;
case R.id.Btn_Num0:
case R.id.Btn_Num1:
case R.id.Btn_Num2:
case R.id.Btn_Num3:
case R.id.Btn_Num4:
case R.id.Btn_Num5:
case R.id.Btn_Num6:
case R.id.Btn_Num7:
case R.id.Btn_Num8:
case R.id.Btn_Num9:
case R.id.Btn_DecimalPoint:
setNum(pre);
break;
case R.id.Btn_Subtraction:
case R.id.Btn_Addition:
case R.id.Btn_ModuloDivision:
case R.id.Btn_Multiplication:
case R.id.Btn_Division:
case R.id.Btn_Equal:
setOperator(pre);
break;
}
}
/**
public void setOperator(String label) {
switch (operator){
case "/":
// 除法运算
// 如果当前结果文本框中的值等于0
if (getNumFromEV_Result() == 0.0) {
// 操作不合法
operateValidFlag = false;
EV_Result.setText("除数不能为零!");
} else {
currentResult /= getNumFromEV_Result();
}
break;
case "+":
// 加法运算
currentResult += getNumFromEV_Result();
break;
case "-":
// 减法运算
currentResult -= getNumFromEV_Result();