为了账号安全,请及时绑定邮箱和手机立即绑定

给需要参考的同学,大家一起学习学习

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;


public class MainActivity extends Activity implements OnClickListener {

private Button btn_0;

private Button btn_1;

private Button btn_2;

private Button btn_3;

private Button btn_4;

private Button btn_5;

private Button btn_6;

private Button btn_7;

private Button btn_8;

private Button btn_9;

private Button btn_point;

private Button btn_clear;

private Button btn_del;

private Button btn_jia;

private Button btn_jian;

private Button btn_cheng;

private Button btn_chu;

private Button btn_equal;

private EditText et_input;


// 输出结果后,如果再点击按钮则需要清空数据,这里需要使用到一个标识

// 也就是说当点击等于号后,下次再点击其他按钮的时候需要将原来的数据清空

boolean clear_flag;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 实例化

btn_0 = (Button) findViewById(R.id.btn_0);

btn_1 = (Button) findViewById(R.id.btn_1);

btn_2 = (Button) findViewById(R.id.btn_2);

btn_3 = (Button) findViewById(R.id.btn_3);

btn_4 = (Button) findViewById(R.id.btn_4);

btn_5 = (Button) findViewById(R.id.btn_5);

btn_6 = (Button) findViewById(R.id.btn_6);

btn_7 = (Button) findViewById(R.id.btn_7);

btn_8 = (Button) findViewById(R.id.btn_8);

btn_9 = (Button) findViewById(R.id.btn_9);

btn_point = (Button) findViewById(R.id.btn_point);

btn_clear = (Button) findViewById(R.id.btn_clear);

btn_del = (Button) findViewById(R.id.btn_del);

btn_jia = (Button) findViewById(R.id.btn_jia);

btn_jian = (Button) findViewById(R.id.btn_jian);

btn_cheng = (Button) findViewById(R.id.btn_cheng);

btn_chu = (Button) findViewById(R.id.btn_chu);

btn_equal = (Button) findViewById(R.id.btn_equal);

et_input = (EditText) findViewById(R.id.et_input);


// 监听点击事件

btn_0.setOnClickListener(this);

btn_1.setOnClickListener(this);

btn_2.setOnClickListener(this);

btn_3.setOnClickListener(this);

btn_4.setOnClickListener(this);

btn_5.setOnClickListener(this);

btn_6.setOnClickListener(this);

btn_7.setOnClickListener(this);

btn_8.setOnClickListener(this);

btn_9.setOnClickListener(this);

btn_point.setOnClickListener(this);

btn_clear.setOnClickListener(this);

btn_del.setOnClickListener(this);

btn_jia.setOnClickListener(this);

btn_jian.setOnClickListener(this);

btn_cheng.setOnClickListener(this);

btn_chu.setOnClickListener(this);

btn_equal.setOnClickListener(this);


}


@Override

public void onClick(View v) {

String text = et_input.getText().toString();

switch (v.getId()) {


// 设置数字按钮点击事件

case R.id.btn_0:

case R.id.btn_1:

case R.id.btn_2:

case R.id.btn_3:

case R.id.btn_4:

case R.id.btn_5:

case R.id.btn_6:

case R.id.btn_7:

case R.id.btn_8:

case R.id.btn_9:

case R.id.btn_point:

if (clear_flag) {

clear_flag = false;

text = "";

et_input.setText("");

}

et_input.setText(text + ((Button) v).getText());

break;


// 设置运算按钮点击事件

case R.id.btn_jia:

case R.id.btn_jian:

case R.id.btn_cheng:

case R.id.btn_chu:

if (clear_flag) {

clear_flag = false;

}

if (text != null && !text.equals(""))

et_input.setText(text + " " + ((Button) v).getText() + " ");

break;


// 设置清除按钮点击事件

case R.id.btn_clear:

clear_flag = false;

text = "";

et_input.setText(null);

break;


// 设置删除按钮点击事件

case R.id.btn_del:

if (clear_flag) {

clear_flag = false;

text = "";

et_input.setText("");

} else if (text != null && !text.equals(""))

et_input.setText(text.substring(0, text.length() - 1));

break;


// 设置等于号按钮点击事件

case R.id.btn_equal:

getResult();

break;

}

}


/**

* 运算结果

*/

private void getResult() {

String text = et_input.getText().toString();

double result = 0;

if (clear_flag) {

clear_flag = true;

return;

}

clear_flag = true;

if (text == null || text.equals("")) {

return;

}

if (!text.contains(" ")) {

return;

}


// 运算符前的字符串

String n1 = text.substring(0, text.indexOf(" "));

// 运算符

String ysf = text.substring(text.indexOf(" ") + 1,

text.indexOf(" ") + 2);

// 运算符后的字符串

String n2 = text.substring(text.indexOf(" ") + 3);


// 两个数都为空时的运算结果

if (n1 != null && n2 != null) {


// 对数据转型后运算

double num1 = Double.parseDouble(n1);

double num2 = Double.parseDouble(n2);

if (ysf.equals("+"))

result = num1 + num2;

else if (ysf.equals("-"))

result = num1 - num2;

else if (ysf.equals("*"))

result = num1 * num2;

else if (ysf.equals("/"))

if (num2 == 0)

result = 0;

else

result = num1 / num2;


// 设置显示结果

if (!n1.contains(".") && !n2.contains(".") && !ysf.equals("/")) {

int r = (int) result;

et_input.setText(r + "");

} else {

// 判断如果输出的结果以.0结尾,就将该结果改为整数表示

if ((result + "").endsWith(".0")) {

int r = (int) result;

et_input.setText(r + "");

} else {

et_input.setText(result + "");

}

}

// 第一数不为空,第二个数为空时的运算结果

} else if (n1 != null && n2 == null) {

et_input.setText(text);


// 第一个数为空,第二个不为空时的运算结果

} else if (n1 == null && n2 != null) {


// 对数据转型后运算

double num2 = Double.parseDouble(n2);

if (ysf.equals("+"))

result = 0 + num2;

else if (ysf.equals("-"))

result = 0 - num2;

else if (ysf.equals("*"))

result = 0;

else if (ysf.equals("/"))

result = 0;


// 设置显示结果

if (!n2.contains(".")) {

int r = (int) result;

et_input.setText(r + "");

} else {

et_input.setText(result + "");

}


// 两个数都为空的时候

} else {

et_input.setText(null);

}


}

}


正在回答

1 回答

有问题这个代码

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第一门课(入门篇)
  • 参与学习       312584    人
  • 解答问题       4633    个

想快速掌握Android应用开发基础,选择学习这门课程就对了。

进入课程

给需要参考的同学,大家一起学习学习

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信