简易计算机
思路:
效果图:
注意:界面的数字显示按钮在数字的下面,可根据自己的需求写。
业务处理界面:
//定义所有按钮控制
private Button btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_0,btn_pot,btn_eq,btn_add,btn_min,btn_mult,btn_div;
//显示输入的数字
private EditText editText;
//显示算式
private TextView textView;
//两个操作数
private double n1 = 0.0, n2 = 0.0;
//操作符
private String opt = "+";
//根据被选中的id添加监听事件
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
editText =(EditText) findViewById(R.id.editView);
textView =(TextView) findViewById(R.id.textView);
//获取字符
String s = editText.getText().toString();
//View视图值指的是Button的按钮
Button btn = (Button) v;
try {
switch (btn.getId()){
case R.id.btn_main2_1: //1
{
String str = editText.getText().toString();
editText.setText(str + 1);
str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_add ://+
{
String str = editText.getText().toString();
n1 = Double.parseDouble(str);
opt = "+";
textView.setText(n1 + opt);
editText.setText("");
break;
}
case R.id.btn_main2_2 ://2
{
String str = editText.getText().toString();
editText.setText(str + 2);
str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_eq ://==
{
if(opt == "+"){
String str =editText.getText().toString();
n2 = Double.parseDouble(str);
textView.setText(n1 + opt + n2 + "=");
editText.setText((n1 + n2)+"");
}else if(opt == "-"){
String str =editText.getText().toString();
n2 = Double.parseDouble(str);
textView.setText(n1 + opt +n2+"=");
editText.setText((n1 - n2)+"");
}else if(opt == "*"){
String str =editText.getText().toString();
n2 = Double.parseDouble(str);
textView.setText(n1 + opt +n2+"=");
editText.setText((n1 * n2)+"");
}else if (opt == "/"){
if(n2 == 0){
editText.setText("");
textView.setText("除数不能为0");
break;
}else {
String str = editText.getText().toString();
n2 = Double.parseDouble(str);
textView.setText(n1 + opt + n2 + "=");
editText.setText((n1 / n2) + "");
}
}
}
case R.id.btn_main2_3 : //3
{
editText.setText(editText.getText().toString() + 3);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_4 : //4
{
editText.setText(editText.getText().toString() + 4);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_5 : //5
{
editText.setText(editText.getText().toString() + 5);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_6 : //6
{
editText.setText(editText.getText().toString() + 6);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_7 : //7
{
editText.setText(editText.getText().toString() + 7);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_8 : //8
{
editText.setText(editText.getText().toString() + 8);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_9 : //9
{
editText.setText(editText.getText().toString() + 9);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_0 : //0
{
textView.setText(n1 + opt + 10);
editText.setText(editText.getText().toString() + 0);
String str = editText.getText().toString();
textView.setText(str);
break;
}
case R.id.btn_main2_pot://.
{
String str = editText.getText().toString();
if(str.indexOf(".") != -1)
//判断字符串中是否已经包含了小数点,如果有就什么也不做
{
}
else //如果没有小数点
{
if(str.equals("0"))//如果开始为0,
editText.setText(("0" + ".").toString());
else if(str.equals(""))//如果初时显示为空,就什么也不做
{
}
else
editText.setText(str + ".");
}
break;
}
case R.id.btn_main2_div://操作符 /
{
String str = editText.getText().toString();
n1 = Double.parseDouble(str);
opt = "/";
editText.setText("");
textView.setText(n1 + opt);
break;
}
case R.id.btn_main2_mult://操作符*
{
String str = editText.getText().toString();
n1 = Double.parseDouble(str);
opt = "*";
editText.setText("");
textView.setText(n1 + opt);
break;
}
case R.id.btn_main2_min://操作符-
{
String str = editText.getText().toString();
n1 = Double.parseDouble(str);
opt = "-";
editText.setText("");
textView.setText(n1 + opt);
break;
}
}
}catch (Exception e){
}
}
};
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//获取按钮的id
btn_7 = (Button) findViewById(R.id.btn_main2_7);
btn_8 = (Button) findViewById(R.id.btn_main2_8);
btn_9 = (Button) findViewById(R.id.btn_main2_9);
btn_mult = (Button) findViewById(R.id.btn_main2_mult);
btn_4 = (Button) findViewById(R.id.btn_main2_4);
btn_5 = (Button) findViewById(R.id.btn_main2_5);
btn_6 = (Button) findViewById(R.id.btn_main2_6);
btn_div= (Button) findViewById(R.id.btn_main2_div);
btn_1 = (Button) findViewById(R.id.btn_main2_1);
btn_2 = (Button) findViewById(R.id.btn_main2_2);
btn_3 = (Button) findViewById(R.id.btn_main2_3);
btn_min= (Button) findViewById(R.id.btn_main2_min);
btn_0 = (Button) findViewById(R.id.btn_main2_0);
btn_pot = (Button) findViewById(R.id.btn_main2_pot);
btn_eq = (Button) findViewById(R.id.btn_main2_eq);
btn_add= (Button) findViewById(R.id.btn_main2_add);
//为按钮添加监听事件
btn_7.setOnClickListener((View.OnClickListener) listener);
btn_8.setOnClickListener((View.OnClickListener) listener);
btn_9.setOnClickListener((View.OnClickListener) listener);
btn_mult.setOnClickListener((View.OnClickListener) listener);
btn_4.setOnClickListener((View.OnClickListener) listener);
btn_5.setOnClickListener((View.OnClickListener) listener);
btn_6.setOnClickListener((View.OnClickListener) listener);
btn_div.setOnClickListener((View.OnClickListener) listener);
btn_1.setOnClickListener((View.OnClickListener) listener);
btn_2.setOnClickListener((View.OnClickListener) listener);
btn_3.setOnClickListener((View.OnClickListener) listener);
btn_min.setOnClickListener((View.OnClickListener) listener);
btn_0.setOnClickListener((View.OnClickListener) listener);
btn_pot.setOnClickListener((View.OnClickListener) listener);
btn_eq.setOnClickListener((View.OnClickListener) listener);
btn_add.setOnClickListener((View.OnClickListener) listener);
}
注意: View本来是所有控件的父类,但这里的onClick(View v)指的是每一个按钮。