Android Stdio实现简单计算器
因为个人时间有限,算法实现比较简单。
封面:
布局文件activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:rowCount="6"
android:columnCount="4"
>
<EditText
android:id="@+id/btn_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:layout_marginLeft="4dp"
android:gravity="left"
android:text="0"
android:textSize="50dip"
/>
<Button
android:id="@+id/btn_clear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:text="@string/rm"
android:textSize="26sp"
android:textColor="@color/colorAccent"
/>
<Button android:id="@+id/btn_1" android:text="1" android:textSize="26sp" />
<Button android:id="@+id/btn_2" android:text="2" android:textSize="26sp" />
<Button android:id="@+id/btn_3" android:text="3" android:textSize="26sp" />
<Button android:id="@+id/btn_add" android:text="+" android:textSize="26sp" />
<Button android:id="@+id/btn_4" android:text="4" android:textSize="26sp" />
<Button android:id="@+id/btn_5" android:text="5" android:textSize="26sp" />
<Button android:id="@+id/btn_6" android:text="6" android:textSize="26sp" />
<Button android:id="@+id/btn_sub" android:text="-" android:textSize="26sp" />
<Button android:id="@+id/btn_7" android:text="7" android:textSize="26sp" />
<Button android:id="@+id/btn_8" android:text="8" android:textSize="26sp" />
<Button android:id="@+id/btn_9" android:text="9" android:textSize="26sp" />
<Button android:id="@+id/btn_mul" android:text="*" android:textSize="26sp" />
<Button android:id="@+id/btn_dot" android:text="." android:textSize="26sp" />
<Button android:id="@+id/btn_0" android:text="0" android:textSize="26sp" />
<Button android:id="@+id/btn_equ" android:text="=" android:textSize="26sp" />
<Button android:id="@+id/btn_div" android:text="/" android:textSize="26sp" />
</GridLayout>
逻辑文件MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
/*
*数字1
* */
Button btn1;
/*
*数字2
* */
Button btn2;
/*
*数字3
* */
Button btn3;
/*
*数字4
* */
Button btn4;
/*
*数字5
* */
Button btn5;
/*
*数字6
* */
Button btn6;
/*
*数字7
* */
Button btn7;
/*
*数字8
* */
Button btn8;
/*
*数字9
* */
Button btn9;
/*
*数字0
* */
Button btn0;
/*
*+号
* */
Button add;
/*
*-号
* */
Button sub;
/*
* *号
* */
Button mul;
/*
*除号
* */
Button div;
/*
*小数点
* */
Button dot;
/*
*=号
* */
Button equ;
/*
*清除
* */
Button clear;
/*
*显示结果
* */
EditText result;
/*
*计算的数字
* */
double num1 = 0, num2 = 0;
/*
*计算结果
* */
double Result = 0;
/*
*判断操作符
* */
int op = 0;
/*
*显示操作符
* */
String opd = "";
private boolean isZero(String str){
if ("0".equals(str)){
return true;
}else {
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取页面上的控件
btn1 = findViewById(R.id.btn_1);
btn2 = findViewById(R.id.btn_2);
btn3 = findViewById(R.id.btn_3);
btn4 = findViewById(R.id.btn_4);
btn5 = findViewById(R.id.btn_5);
btn6 = findViewById(R.id.btn_6);
btn7 = findViewById(R.id.btn_7);
btn8 = findViewById(R.id.btn_8);
btn9 = findViewById(R.id.btn_9);
btn0 = findViewById(R.id.btn_0);
add = findViewById(R.id.btn_add);
sub = findViewById(R.id.btn_sub);
mul = findViewById(R.id.btn_mul);
div = findViewById(R.id.btn_div);
equ = findViewById(R.id.btn_equ);
dot = findViewById(R.id.btn_dot);
clear = findViewById(R.id.btn_clear);
result = findViewById(R.id.btn_result);
// 按钮的单击事件
btn1.setOnClickListener(new Click());
btn2.setOnClickListener(new Click());
btn3.setOnClickListener(new Click());
btn4.setOnClickListener(new Click());
btn5.setOnClickListener(new Click());
btn6.setOnClickListener(new Click());
btn7.setOnClickListener(new Click());
btn8.setOnClickListener(new Click());
btn9.setOnClickListener(new Click());
btn0.setOnClickListener(new Click());
add.setOnClickListener(new Click());
sub.setOnClickListener(new Click());
mul.setOnClickListener(new Click());
div.setOnClickListener(new Click());
equ.setOnClickListener(new Click());
dot.setOnClickListener(new Click());
clear.setOnClickListener(new Click());
result.setOnClickListener(new Click());
}
// 设置按钮点击后的监听
class Click implements View.OnClickListener {
public void onClick(View v) {
switch (v.getId()) { //switch循环获取点击按钮后的值
case R.id.btn_0: //获取,0-9、小数点,并在编辑框显示
String myString = result.getText().toString();
myString += "0";
result.setText(myString);
break;
case R.id.btn_1:
String myString1 = result.getText().toString();
if (isZero(myString1)){
myString1="1";
}else {
myString1 += "1";
}
result.setText(myString1);
break;
case R.id.btn_2:
String myString2 = result.getText().toString();
if (isZero(myString2)){
myString2="2";
}else {
myString2 += "2";
}
result.setText(myString2);
break;
case R.id.btn_3:
String myString3 = result.getText().toString();
if (isZero(myString3)){
myString3="3";
}else {
myString3 += "3";
}
result.setText(myString3);
break;
case R.id.btn_4:
String myString4 = result.getText().toString();
if (isZero(myString4)){
myString4="4";
}else {
myString4 += "4";
}
result.setText(myString4);
break;
case R.id.btn_5:
String myString5 = result.getText().toString();
if (isZero(myString5)){
myString5="5";
}else {
myString5 += "5";
}
result.setText(myString5);
break;
case R.id.btn_6:
String myString6 = result.getText().toString();
if (isZero(myString6)){
myString6="6";
}else {
myString6 += "6";
}
result.setText(myString6);
break;
case R.id.btn_7:
String myString7 = result.getText().toString();
if (isZero(myString7)){
myString7="7";
}else {
myString7 += "7";
}
result.setText(myString7);
break;
case R.id.btn_8:
String myString8 = result.getText().toString();
if (isZero(myString8)){
myString8="8";
}else {
myString8 += "8";
}
result.setText(myString8);
break;
case R.id.btn_9:
String myString9 = result.getText().toString();
if (isZero(myString9)){
myString9="9";
}else {
myString9 += "9";
}
result.setText(myString9);
break;
case R.id.btn_dot:
String myStringDot = result.getText().toString();
myStringDot += ".";
result.setText(myStringDot);
break;
case R.id.btn_add: //判断,使用加减乘除的操作符
String myStringAdd = result.getText().toString();
if (myStringAdd.equals(null)) {
return;
}
num1 = Double.valueOf(myStringAdd);
result.setText(null);
op = 1;
opd = "+";
break;
case R.id.btn_sub:
String myStringSub = result.getText().toString();
if (myStringSub.equals(null)) {
return;
}
num1 = Double.valueOf(myStringSub);
result.setText(null);
op = 2;
opd = "-";
break;
case R.id.btn_mul:
String myStringMul = result.getText().toString();
if (myStringMul.equals(null)) {
return;
}
num1 = Double.valueOf(myStringMul);
result.setText(null);
op = 3;
opd = "×";
break;
case R.id.btn_div:
String myStringDiv = result.getText().toString();
if (myStringDiv.equals(null)) {
return;
}
num1 = Double.valueOf(myStringDiv);
result.setText(null);
op = 4;
opd = "÷";
break;
case R.id.btn_clear: //清除,将编辑框文本显示为空
result.setText(null);
break;
case R.id.btn_equ: //计算,以操作符为判断,选择所需的运算,并将结果输出
String myStringEqu = result.getText().toString();
if (myStringEqu.equals(null)) {
return;
}
num2 = Double.valueOf(myStringEqu);
result.setText(null);
switch (op) {
case 0:
Result = num2;
break;
case 1:
Result = num1 + num2;
break;
case 2:
Result = num1 - num2;
break;
case 3:
Result = num1 * num2;
break;
case 4:
if (num2 == 0) //除法中分子与分母之分
Result = 0;
else
Result = num1 / num2;
break;
default:
Result = 0;
break;
}
result.setText(String.valueOf(Result)); //将结果完整输出
break;
default:
break;
}
}
}
}
测试运行结果:
乘
等于