热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android实现计算器功能

设计一个简单的计算器。第一个Activity的界面。第二个Activity显示算式和计算结果。第一个Activity代码:importandroid.app.Activity;im

设计一个简单的计算器。

第一个Activity的界面。

 ,

第二个Activity显示算式和计算结果。

第一个Activity代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	Button one,two,three,four,five,six,seven,eight,nine,zero,div,mod,mul,fenshu,sub,equal,point,add;
	double num1,num2,num,xiaoshudian;
	int flag,ispoint;
	char operation[]=new char[2];
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		num1=0;num2=0;num=0;flag=0;ispoint=0;xiaoshudian=0.1;
		One=(Button)findViewById(R.id.one);
		two=(Button)findViewById(R.id.two);
		three=(Button)findViewById(R.id.three);
		four=(Button)findViewById(R.id.four);
		five=(Button)findViewById(R.id.five);
		six=(Button)findViewById(R.id.six);
		seven=(Button)findViewById(R.id.seven);
		eight=(Button)findViewById(R.id.eight);
		nine=(Button)findViewById(R.id.nine);
		zero=(Button)findViewById(R.id.zero);
		div=(Button)findViewById(R.id.div);
		mod=(Button)findViewById(R.id.mod);
		mul=(Button)findViewById(R.id.mul);
		fenshu=(Button)findViewById(R.id.fenshu);
		sub=(Button)findViewById(R.id.sub);
		add=(Button)findViewById(R.id.add);
		equal=(Button)findViewById(R.id.equal);
		point=(Button)findViewById(R.id.point);
		one.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+1;
					else {num1=num1+1*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+1;
					else{num2=num2+1*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		two.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+2;
					else {num1=num1+2*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+2;
					else{num2=num2+2*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		three.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+3;
					else {num1=num1+3*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+3;
					else{num2=num2+3*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		four.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+4;
					else {num1=num1+4*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+4;
					else{num2=num2+4*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		five.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+5;
					else {num1=num1+5*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+5;
					else{num2=num2+5*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		six.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+6;
					else {num1=num1+6*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+6;
					else{num2=num2+6*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		seven.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+7;
					else {num1=num1+7*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+7;
					else{num2=num2+7*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		eight.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+8;
					else {num1=num1+8*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+8;
					else{num2=num2+8*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		nine.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10+9;
					else {num1=num1+9*xiaoshudian;xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10+9;
					else{num2=num2+9*xiaoshudian;xiaoshudian/=10;}
				}
			}
		});
		zero.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==0){
					if(ispoint==0)num1=num1*10;
					else {xiaoshudian/=10;}
				}
				else{
					if(ispoint==0)num2=num2*10;
					else{xiaoshudian/=10;}
				}
			}
		});
		point.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				ispoint=1;
			}
		});
		add.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				flag=1;
				ispoint=0;
			}
		});
		sub.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				flag=2;
				ispoint=0;
			}
		});
		mul.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				flag=3;
				ispoint=0;
			}
		});
		div.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				flag=4;
				ispoint=0;
			}
		});
		equal.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				if(flag==1){num=num1+num2;operation[0]=‘+‘;}
				else if(flag==2){num=num1-num2;operation[0]=‘-‘;}
				else if(flag==3){num=num1*num2;operation[0]=‘*‘;}
				else if(flag==4){num=num1/num2;operation[0]=‘/‘;}
				Intent intent=new Intent(MainActivity.this,SecondActivity.class);
				intent.putExtra("num1", new Double(num1).toString());
				intent.putExtra("opreation",new String(operation).toString());
				intent.putExtra("num2", new Double(num2).toString());
				intent.putExtra("num", new Double(num).toString());
				startActivity(intent);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}


}

第二个Activity代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class SecondActivity extends Activity{
	EditText text;
	Button myButton;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		text=(EditText)findViewById(R.id.edt);
		myButton=(Button)findViewById(R.id.btn);
		Intent intent=getIntent();
		String num1=intent.getStringExtra("num1");
		String operation=intent.getStringExtra("opreation");
		String num2=intent.getStringExtra("num2");
		String num=intent.getStringExtra("num");
		text.setText(num1+operation+num2+"="+num);
		myButton.setOnClickListener(new myButtonListener());
	}
	class myButtonListener implements OnClickListener{
		public void onClick(View arg0){
			Intent intent=new Intent(SecondActivity.this,MainActivity.class);
			startActivity(intent);
		}
	}
}

第一个Activity布局:


	

第二个Activity布局:



    
  
,,

android实现计算器功能,,

android实现计算器功能


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
梦露的殇_192
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有