简易Android计算器

自学android也有断断续续的好些天了,试着做了一个简单的计算器小应用,直接放代码:


<pre name="code" class="java">package com.example.calculator;

import com.example.calculator.R;

import android.os.Bundle;
import android.app.Activity;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private EditText showresult;
	private Button b_dot, b_clear, b_equal;

	int[] numberIDs = { R.id.one, R.id.two, R.id.three, R.id.four, R.id.five,
			R.id.six, R.id.seven, R.id.eight, R.id.nine, R.id.zero };
	int[] operatorIDs = { R.id.add, R.id.subtract, R.id.multiply, R.id.divide };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		showresult = (EditText) findViewById(R.id.showresult);
		showresult.setInputType(InputType.TYPE_NULL);
		for (int i = 0; i < numberIDs.length; i++) {
			findViewById(numberIDs[i]).setOnClickListener(new NumberListener());
		}
		for (int i = 0; i < operatorIDs.length; i++) {
			findViewById(operatorIDs[i]).setOnClickListener(
					new OperatorListener());
		}
		b_dot = (Button) findViewById(R.id.dot);
		b_clear = (Button) findViewById(R.id.clear);
		b_equal = (Button) findViewById(R.id.equal);
		b_equal.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				calculate();
			}
		});
		b_dot.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String s = showresult.getText().toString();
				if (s.indexOf(".") > 0) {
					if (s.indexOf("+") > s.indexOf(".")
							|| s.indexOf("-") > s.indexOf(".")
							|| s.indexOf("×") > s.indexOf(".")
							|| s.indexOf("÷") > s.indexOf(".")) {
						showresult.setText(s + b_dot.getText().toString());
					}
				} else if (s != "") {
					showresult.setText(s + b_dot.getText().toString());
				} else {
					showresult.setText("");
				}
				showresult.setSelection(showresult.getText().length());
			}
		});

		b_clear.setOnLongClickListener(new OnLongClickListener() {

			@Override
			public boolean onLongClick(View v) {
				showresult.setText("");
				return false;
			}
		});
		b_clear.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String s = showresult.getText().toString();
				if (s == "") {
					showresult.setText("");
				} else {
					showresult.setText(s.subSequence(0, s.length() - 1));
				}
			}
		});
	}
	
	private void calculate(){
		String s = showresult.getText().toString();
		String[] opretors = {"+","-","×","÷"};
		for (int i = 0; i < opretors.length; i++) {
			String opretor = opretors[i];
			if (s.indexOf(opretor)>0) {
				String[] f = s.split(opretor);
				if (f.length>1) {
					Float f1 = Float.parseFloat(f[0]);
					Float f2 = Float.parseFloat(f[1]);
					Float result=0f;
					if (opretor.equals("+")) {
						result = f1 +f2;
					}else if (opretor.equals("-")) {
						result = f1 - f2;
					}else if (opretor.equals("×")) {
						result = f1 * f2;
					}else if(opretor.equals("÷")){
						if (f2 == 0) {
							Toast t = Toast.makeText(MainActivity.this, "除数不能为0!",
									Toast.LENGTH_LONG);
							t.show();
						} else {
							result = f1 / f2;
							showresult.setText(result.toString());
						}
					}
					showresult.setText(result.toString());
				}
			}
		}
	}

	class NumberListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			String s = showresult.getText().toString();
			showresult.setText(s + ((Button) v).getText().toString());
			showresult.setSelection(showresult.getText().length());
		}

	}

	class OperatorListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			String s = showresult.getText().toString();
			if (s.equals("")) {
				showresult.setText("");
			} else if (s.indexOf("-") > 0 || s.indexOf("×") > 0
					|| s.indexOf("+") > 0 || s.indexOf("÷") > 0) {
				calculate();
			} else {
				showresult.setText(s + ((Button) v).getText());
			}
			showresult.setSelection(showresult.getText().length());
		}
	}
}

 放上截图(本人偏爱暗色调,别吐槽等号的大小 
尴尬): 



bug什么的应该没有了吧~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值