在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android 计算器 例子源码下载

android 计算器 例子源码下载

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.06M
  • 下载次数:27
  • 浏览次数:293
  • 发布时间:2014-11-20
  • 实例类别:Android平台开发
  • 发 布 人:Easy
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 计算器

实例介绍

【实例简介】android 计算器
【实例截图】

【核心代码】

package etu.ecjtu.calculater;

import org.hemingway.calculater.R;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class CalculaterMain extends Activity implements View.OnClickListener {
	private EditText output;
	private EditText input;
	private Button btn0;
	private Button btn1;
	private Button btn2;
	private Button btn3;
	private Button btn4;
	private Button btn5;
	private Button btn6;
	private Button btn7;
	private Button btn8;
	private Button btn9;
	private Button btnadd;
	private Button btnsubtract;
	private Button btnmultiply;
	private Button btndivide;
	private Button btnclear;
	private Button btnresult;

	private String str;// 保存数字
	private String strold;
	private char act;// 记录符号
	private int count;// 判断要计算的次数,如果超过一个符号,先算出来一部分
	private int result;// 计算的结果

	private int err;// 无错误的时候为0
	private int flag;// 一个标志,如果为1,可以响应运算消息,如果为0,不响应运算消息,只有前面是数字才可以响应运算消息
	private int flag2;// 一个标志,如果为1,可以响应数字输入,如果为0,清屏!
	Button[] b = new Button[16]; // 存储键盘ID
	private int index = 0; // 设置用来轮流切换

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		output = (EditText) findViewById(R.id.output);
		input = (EditText) findViewById(R.id.input);
		btn0 = (Button) findViewById(R.id.zero);
		btn1 = (Button) findViewById(R.id.one);
		btn2 = (Button) findViewById(R.id.two);
		btn3 = (Button) findViewById(R.id.three);
		btn4 = (Button) findViewById(R.id.four);
		btn5 = (Button) findViewById(R.id.five);
		btn6 = (Button) findViewById(R.id.six);
		btn7 = (Button) findViewById(R.id.seven);
		btn8 = (Button) findViewById(R.id.eight);
		btn9 = (Button) findViewById(R.id.nine);
		btnadd = (Button) findViewById(R.id.add);
		btnsubtract = (Button) findViewById(R.id.subtract);
		btnmultiply = (Button) findViewById(R.id.multiply);
		btndivide = (Button) findViewById(R.id.divide);
		btnclear = (Button) findViewById(R.id.clear);
		btnresult = (Button) findViewById(R.id.result);

		btn0.setOnClickListener(this);
		btn1.setOnClickListener(this);
		btn2.setOnClickListener(this);
		btn3.setOnClickListener(this);
		btn4.setOnClickListener(this);
		btn5.setOnClickListener(this);
		btn6.setOnClickListener(this);
		btn7.setOnClickListener(this);
		btn8.setOnClickListener(this);
		btn9.setOnClickListener(this);
		btnadd.setOnClickListener(this);
		btnsubtract.setOnClickListener(this);
		btnmultiply.setOnClickListener(this);
		btndivide.setOnClickListener(this);
		btnclear.setOnClickListener(this);
		btnresult.setOnClickListener(this);

		act = ' '; // = - * / 判断
		str = ""; // 输入
		strold = "";// 存储原输入
		count = 0; // 计算次数
		result = 0;// 输出
		err = 0;// 处理异常,默认无异常
		flag = 0;// 默认不能响应,按下第一个数字后改为1,可以响应
		flag2 = 1; // 默认为1。计算result后改为0,不可以响应num,只可以响应act;
		int[] btn = { R.id.add, R.id.clear, R.id.divide, R.id.multiply,
				R.id.subtract, R.id.result, R.id.zero, 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 };
		for (int i = 0; i < btn.length; i  ) {
			b[i] = (Button) findViewById(btn[i]);
		}
	}

	/**
	 * 点击按钮 获取输入
	 */
	public void onClick(View view) {
		// TODO Auto-generated method stub

		switch (view.getId()) {
		case R.id.zero:
			num(0);
			break;
		case R.id.one:
			num(1);
			break;
		case R.id.two:
			num(2);
			break;
		case R.id.three:
			num(3);
			break;
		case R.id.four:
			num(4);
			break;
		case R.id.five:
			num(5);
			break;
		case R.id.six:
			num(6);
			break;
		case R.id.seven:
			num(7);
			break;
		case R.id.eight:
			num(8);
			break;
		case R.id.nine:
			num(9);
			break;

		case R.id.add:
			add();
			break;
		case R.id.subtract:
			sub();
			break;
		case R.id.multiply:
			multiply();
			break;
		case R.id.divide:
			divide();
			break;
		case R.id.clear:
			clear();
			break;
		case R.id.result:
			result();
			if (err != 1 && flag != 0) // 无异常,可响应输入
				output.setText(String.valueOf(result)); // 输出显示
			break;
		default:
			break;
		}
		input.setText(strold   act   str); // 设置输入显示
	}

	/**
	 * 读取输入的数字
	 * 
	 * @param n
	 */
	public void num(int n) {
		if (flag2 == 0) { // 已经计算结果
			clear(); // 清屏
			flag = 1;// 设置可响应运算
		} else {
			str = str   String.valueOf(n);// 非计算结果,可响应数字
			flag = 1; // 设置可响应运算
		}
	}

	/**
	 * 加法计算
	 */
	public void add() {
		if (flag != 0) { // 可响应 运算
			check(); // 判断
			act = ' ';
			flag = 0; // 设置不可响应运算
			flag2 = 1;// 设置可响应数字输入
		}
	}

	/**
	 * 减法计算
	 */
	public void sub() {
		if (flag != 0) {
			check();
			act = '-';
			flag = 0;
			flag2 = 1;
		}
	}

	/**
	 * 乘法计算
	 */
	public void multiply() {
		if (flag != 0) {
			check();
			act = '*';
			flag = 0;
			flag2 = 1;
		}
	}

	/**
	 * 除法计算
	 */
	public void divide() {
		if (flag != 0) {
			check();
			act = '/';
			flag = 0;
			flag2 = 1;
		}
	}

	/**
	 * 清屏
	 */
	public void clear() {
		str = strold = "";
		count = 0;
		act = ' ';
		result = 0;
		err = 0; // 无异常
		flag = 0; // 设置可响应运算
		flag2 = 1;// 设置可响应数字输入
		input.setText(strold   act   str);
		output.setText("");
	}

	/**
	 * 检查
	 */
	public void check() {
		if (count >= 1) { // 如果有运算
			result(); // 计算结果
			str = String.valueOf(result);
		}
		strold = str;
		str = "";
		count  ;
	}

	/**
	 * 计算结果
	 */
	public void result() {
		int a, b;
		a = Integer.parseInt(strold);
		b = Integer.parseInt(str);
		if (flag != 0) { // 可以响应运算
			if (b == 0 && act == '/') { // 除数为0,并且是除法运算
				clear();
				output.setText("除数不能为零!按C键重新计算");
				err = 1;// 异常
			}
			result = 0;
			if (err != 1) { // 无异常
				switch (act) {
				case ' ':
					result = a   b;
					break;
				case '-':
					result = a - b;
					break;
				case '*':
					result = a * b;
					break;
				case '/':
					result = a / b;
					break;
				default:
					break;
				}
			}
		}
		flag2 = 0; // 运算后,设置不可响应数字输入
	}

	public void onConfigurationChanged(Configuration newConfig) {
		if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
			// 横向
			setContentView(R.layout.main);
		} else {
			// 竖向
			setContentView(R.layout.main);
		}

	}

	/**
	 * 更改键盘顺序(方法未写)
	 */
	public void changeLocation() {

	}

	/**
	 * 更改键盘颜色
	 */
	public void setColor(int t) {
		for (int i = 0; i < b.length; i  ) {
			b[i].setBackgroundResource(t);
		}
	}

	/**
	 * 设置键盘颜色(3种轮流切换)
	 * 
	 * @param index
	 */
	public void changeColor(int index) {
		switch (index) {
		case 0:
			// setColor(0x9400D3);//无法设置 不知原因
			break;
		case 1:
			// setColor(0x00FF00);
			break;
		case 2:
			// setColor(0xB4CDCD);
			break;
		default:
			break;
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		SubMenu subMenu = menu.addSubMenu(1, 0, 1, "系统设置");// 主菜单
		MenuItem menuItem = subMenu.add(2, 1, 1, "更换键盘背景");// 子菜单
		subMenu.add(2, 2, 2, "更改键盘顺序");
		menu.addSubMenu(1, 3, 2, "退出"); // 主菜单
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		// 响应每个菜单项(通过菜单项的ID)
		case 0:
			Toast.makeText(getApplicationContext(), "您选择了系统设置",
					Toast.LENGTH_LONG).show();
			break;
		case 1:
			Toast.makeText(getApplicationContext(), "您选择了更换键盘背景",
					Toast.LENGTH_LONG).show();
			changeColor(index);
			index  ;
			break;
		case 2:
			Toast.makeText(getApplicationContext(), "您选择了更换键盘顺序",
					Toast.LENGTH_LONG).show();
			changeLocation();
			break;
		case 3:
			Toast.makeText(getApplicationContext(), "您选择了退出", Toast.LENGTH_LONG)
					.show();
			System.exit(0);
			break;
		default:
			// 对没有处理的事件,交给父类来处理
			return super.onOptionsItemSelected(item);
		}
		// 返回true表示处理完菜单项的事件,不需要将该事件继续传播下去了
		return true;
	}
}

标签: 计算器

实例下载地址

android 计算器 例子源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 caesarii 发表于: 2016-06-20 13:20 27
好案例,谢谢

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警