1 布局文件 activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp">
<EditText
android:id="@+id/et_result"
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="right|bottom"
android:editable="false"
android:hint="请输入"
android:textSize="26sp" />
<TextView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="right"
android:text="0"
android:textSize="30dp"
/>
<Button
android:id="@+id/btn_clear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="清除"
android:textSize="26sp"
android:background="#fb772e"/>
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:alignmentMode="alignBounds"
android:background="#F0F0F0"
android:columnCount="4"
android:orientation="horizontal"
android:rowCount="4">
<Button
android:id="@+id/btn_1"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="1"
android:textSize="26sp" />
<Button
android:id="@+id/btn_2"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="2"
android:textSize="26sp" />
<Button
android:id="@+id/btn_3"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="3"
android:textSize="26sp" />
<Button
android:id="@+id/btn_add"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="+"
android:textSize="26sp" />
<Button
android:id="@+id/btn_4"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="4"
android:textSize="26sp" />
<Button
android:id="@+id/btn_5"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="5"
android:textSize="26sp" />
<Button
android:id="@+id/btn_6"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="6"
android:textSize="26sp" />
<Button
android:id="@+id/btn_sub"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="-"
android:textSize="26sp" />
<Button
android:id="@+id/btn_7"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="7"
android:textSize="26sp" />
<Button
android:id="@+id/btn_8"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="8"
android:textSize="26sp" />
<Button
android:id="@+id/btn_9"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="9"
android:textSize="26sp" />
<Button
android:id="@+id/btn_mul"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="×"
android:textSize="26sp" />
<Button
android:id="@+id/btn_dot"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="."
android:textSize="26sp" />
<Button
android:id="@+id/btn_0"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="0"
android:textSize="26sp" />
<Button
android:id="@+id/btn_equ"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="="
android:textSize="26sp" />
<Button
android:id="@+id/btn_div"
android:layout_margin="3dp"
android:background="#ffffff"
android:text="÷"
android:textSize="26sp" />
</GridLayout>
</LinearLayout>
2 控制文件 MainActivity
package com.example.counter;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
Button btn[]=new Button[10]; // 数字
Button add; // +号
Button sub; // -号
Button mul; // *号
Button div; // 除号
Button dot; // 小数点
Button equ; // =号
Button clear; //清除
EditText result; // 显示文本
TextView view;//结果
double num1 = 0, num2 = 0; //计算的数字
double Result = 0;//计算结果
int op = 0;//判断操作符
String opd = " ";//显示操作符
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取页面上的控件
btn[1] = findViewById(R.id.btn_1);
btn[2] = findViewById(R.id.btn_2);
btn[3] = findViewById(R.id.btn_3);
btn[4] = findViewById(R.id.btn_4);
btn[5] = findViewById(R.id.btn_5);
btn[6] = findViewById(R.id.btn_6);
btn[7] = findViewById(R.id.btn_7);
btn[8] = findViewById(R.id.btn_8);
btn[9] = findViewById(R.id.btn_9);
btn[0] = 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.et_result);
view=findViewById(R.id.view);
// 按钮的单击事件
btn[1].setOnClickListener(new Click());
btn[2].setOnClickListener(new Click());
btn[3].setOnClickListener(new Click());
btn[4].setOnClickListener(new Click());
btn[5].setOnClickListener(new Click());
btn[6].setOnClickListener(new Click());
btn[7].setOnClickListener(new Click());
btn[8].setOnClickListener(new Click());
btn[9].setOnClickListener(new Click());
btn[0].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、小数点,并在编辑框显示
result.setText(result.getText()+"0");
break;
case R.id.btn_1:
result.setText(result.getText()+"1");
break;
case R.id.btn_2:
result.setText(result.getText()+"2");
break;
case R.id.btn_3:
result.setText(result.getText()+"3");
break;
case R.id.btn_4:
result.setText(result.getText()+"4");
break;
case R.id.btn_5:
result.setText(result.getText()+"5");
break;
case R.id.btn_6:
result.setText(result.getText()+"6");
break;
case R.id.btn_7:
result.setText(result.getText()+"7");
break;
case R.id.btn_8:
result.setText(result.getText()+"8");
break;
case R.id.btn_9:
result.setText(result.getText()+"9");
break;
case R.id.btn_dot:
result.setText(result.getText()+".");
break;
case R.id.btn_add: //判断,使用加减乘除的操作符
String myStringAdd = result.getText().toString();
if(result.getText().toString().trim().equals("") ){
break;
}
num1 = Double.valueOf(myStringAdd);
result.setText(null);
op = 1;
opd = "+";
// result.setText(result.getText()+"+");
break;
case R.id.btn_sub:
String myStringSub = result.getText().toString();
if (result.getText().toString().trim().equals("") ) {
return;
}
num1 = Double.valueOf(myStringSub);
result.setText(null);
op = 2;
opd = "-";
// result.setText(result.getText()+"-");
break;
case R.id.btn_mul:
String myStringMul = result.getText().toString();
if (result.getText().toString().trim().equals("") ) {
return;
}
num1 = Double.valueOf(myStringMul);
result.setText(null);
op = 3;
opd = "×";
// result.setText(result.getText()+"×");
break;
case R.id.btn_div:
String myStringDiv = result.getText().toString();
if (result.getText().toString().trim().equals("") ) {
return;
}
num1 = Double.valueOf(myStringDiv);
result.setText(null);
op = 4;
opd = "÷";
// result.setText(result.getText()+"÷");
break;
case R.id.btn_clear: //清除,将编辑框文本显示为空
result.setText(null);
view.setText("0");
break;
case R.id.btn_equ: //计算,以操作符为判断,选择所需的运算,并将结果输出
String myStringEqu = result.getText().toString();
if (result.getText().toString().trim().equals("") ) {
return;
}
num2 = Double.valueOf(myStringEqu);
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(Double.toString(num1) + opd + Double.toString(num2) ); //将结果完整输出
view.setText(Double.toString(Result));
break;
default:
break;
}
}
}
class calculate{
public String equal(String str){
return null;
}
}
}