Android--简单计算器

计算器,在我们生活中随处可见,商场里用的电子计算器,做数学题用的科学计算器。计算器作为计算机的副产品,已被广泛运用于生活中,所以,计算器的编程实现也是程序员学习编程的一个好例子。在这里和大家分享一个我自己在学习Android编程时做的一个简单计算器,由于程度有限,所以该计算器只能做单一的加减乘除运算,不能进行四则混合运算(界面设计略)。

首先,当打开计算器这个程序时,我们要屏蔽手机自己的输入法,只用我们自己设计的数字按钮来实现数字和字符(+ - * / =)的输入,所以我们需要一个虚拟键盘的屏蔽程序

EditText input_num=(R.id.input_num);
input_num.setOnClickListener(new EditText.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				InputMethodManager imm = (InputMethodManager) v.getContext()
						.getSystemService(Context.INPUT_METHOD_SERVICE);
				if (imm.isActive()) {
					imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0);
				}
			}

		});

然后我们要判断小数点在每个数中是否是只有一点,如果出现多次或没有出现,都会导致计算出错或者在显示文本框中出错,当然,在这里也是一个按钮的监控事件
ht_t=(Button)findViewById(R.id.ht_t);
ht_t.setOnClickListener(new Button.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (str_num != "") {
					int s = str_num.indexOf(".");
					if (s >= 0) {

					} else {
						input_num.setText(input_num.getText().toString() + ".");
						input_num.setSelection(input_num.getText().length());
						Str(".");
					}
				} else {
					input_num.setText(input_num.getText().toString() + ".");
					input_num.setSelection(input_num.getText().length());
					Str(".");
				}
			}

		});

然后是对字符的判断,比如:当我点击+的时候,首先判断输入框中是否已输入数字,如没有,+不做操作,如输入,再判断输入框中是否已输入+,如没有则输入+,如已输入,则不做任何操作

num_jia.setOnClickListener(new Button.OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// Integer.parseInt
if (str_num == "") {


} else if (input_num.getText().toString() == null) {


} else {
input_num.setText(input_num.getText().toString() + "+");
name1 = Double.parseDouble(str_num);
nameStr = 0;
str_num = "";
input_num.setSelection(input_num.getText().length());
}
}


});

这里特别要特别注意的是,除数不能为零的问题,所以当我我们输入完要计算的数后就是=出结果,在这个过程中要判断除数不能为零的问题,还要选择我们要用到的四种运算方法

number.setOnClickListener(new Button.OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// str.replaceAll(input_num.getText().toString(), name3)
// input_num.getText().toString().replaceAll(name3,"");
// name2=Integer.parseInt(input_num.getText().toString().replaceAll(name3,""));
// name2=Double.parseDouble(input_num.getText().toString());
if(str_num !=""){


name2 = Double.parseDouble(str_num);
/*
* 加减乘除运算选择判断
*/
switch (nameStr) {
case 0:
out = name1 + name2;
break;
case 1:
out = name1 - name2;
break;
case 2:
out = name1 * name2;
break;
case 3:
if (name2 == 0) {
out = 0;
// 除法运算时判断除数不能为0,如果为0,提示框提示错误。
Toast toast = Toast.makeText(MainActivity.this, "错误!除数不能为0.", Toast.LENGTH_LONG);
toast.show();
} else
out = name1 / name2;
break;
default:
break;
}
}

input_num.setText(Double.toString(out));
str_num = Double.toString(out);
input_num.setSelection(input_num.getText().length());
}
});
}
到这里,我的计算器的大部分功能就有了。在后面的调试过程中不可避免的会出现很多问题。当一个问题出现后,就回去修改,反复调试修改,最终会使功能在自己预想的范围内慢慢完善。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值