栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android Studio实现简单计算器功能

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Studio实现简单计算器功能

本文实例为大家分享了Android Studio实现简单计算器功能的具体代码,供大家参考,具体内容如下

程序步骤:

(1)在布局文件定义一些计算器界面的文本框,按钮等组件。

(2)在Activity中获取组件实例。

(3)通过swtich函数,判断输入的内容,并进行相应操作,通过getText()获取文本内容,setText()显示。

程序代码设计:

一、界面布局

参考书本例2-9,应用网格布局设计计算器界面,在设计区域设置一个6行4列的网格布局,第一行为显示数据的文本标签,第二行为清除数据的按钮,即清空所有输入的数据,3-6行划分为均等的16个按钮,分别代表数字0-9,小数点,和运算符加减乘除以及等于号。界面效果图如下

布局文件activity_main.xml:

定义一些计算器界面的文本框,按钮等组件,因为要与控制文件MainActivity.java建立关联,所以每一个组件都需要设置id属性值。要注意的是,打开布局文件时,我一开始参照书本,把原来自动给出的抬头改了,导致界面只能出现文本标签和清除按钮,经过修改,我发现不能修改原来的抬头,直接在下面再设置网格布局。


 

 

 

二、设计控制文件MainActivity:

建立与程序中组件与用户界面程序组件的关联,并编写设计按钮的监听事件处理代码。点击数字和小数点按钮在文本标签输入并显示要计算的数字,点击运算符按钮获取前面的数字,放进num1,按=运算符时,获取前面的数字,再通过op判断操作数,进行加减乘除运算,输出结果。

关联用户界面:

public class MainActivity extends AppCompatActivity {
 
 private TextView txt; 
 private Button butp,but1,but2,but3,but4,but5,but6,but7,but8,but9,but0,buta,buts,butm,butdiv,butdopt,buteq;
 double num1=0,num2=0;
 double result=0; 
 int op=0; 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 txt=(TextView) findViewById(R.id.textView); 
 butp=(Button)findViewById(R.id.butCancel); 
 but1=(Button)findViewById(R.id.but_1); 
 but2=(Button)findViewById(R.id.but_2);
 but3=(Button)findViewById(R.id.but_3);
 but4=(Button)findViewById(R.id.but_4);
 but5=(Button)findViewById(R.id.but_5);
 but6=(Button)findViewById(R.id.but_6);
 but7=(Button)findViewById(R.id.but_7);
 but8=(Button)findViewById(R.id.but_8);
 but9=(Button)findViewById(R.id.but_9);
 but0=(Button)findViewById(R.id.but_0);
 buta=(Button)findViewById(R.id.but_add); 
 buts=(Button)findViewById(R.id.but_sub); 
 butm=(Button)findViewById(R.id.but_mut); 
 butdiv=(Button)findViewById(R.id.but_div); 
 butdopt=(Button)findViewById(R.id.but_dopt); 
 buteq=(Button)findViewById(R.id.but_equ); 
 
 
 butp.setonClickListener(new mClick());
 but1.setonClickListener(new mClick());
 but2.setonClickListener(new mClick());
 but3.setonClickListener(new mClick());
 but4.setonClickListener(new mClick());
 but5.setonClickListener(new mClick());
 but6.setonClickListener(new mClick());
 but7.setonClickListener(new mClick());
 but8.setonClickListener(new mClick());
 but9.setonClickListener(new mClick());
 but0.setonClickListener(new mClick());
 buta.setonClickListener(new mClick());
 buts.setonClickListener(new mClick());
 butm.setonClickListener(new mClick());
 butdiv.setonClickListener(new mClick());
 butdopt.setonClickListener(new mClick());
 buteq.setonClickListener(new mClick());
 }

实现监听时间处理:

数字,小数点按键:

class mClick implements View.onClickListener
 {
 public void onClick(View v) {
 
 switch(v.getId()){ 
 case R.id.butCancel: 
 txt.setText(null);
 break;
 
 case R.id.but_1:
 String str1=txt.getText().toString(); 
 txt.setText(str1); 
 break;
 case R.id.but_2:
 String str2=txt.getText().toString();
 str2+="2";
 txt.setText(str2);
 break;
 case R.id.but_3:
 String str3=txt.getText().toString();
 str3+="3";
 txt.setText(str3);
 break;
 case R.id.but_4:
 String str4=txt.getText().toString();
 str4+="4";
 txt.setText(str4);
 break;
 case R.id.but_5:
 String str5=txt.getText().toString();
 str5+="5";
 txt.setText(str5);
 break;
 case R.id.but_6:
 String str6=txt.getText().toString();
 str6+="6";
 txt.setText(str6);
 break;
 case R.id.but_7:
 String str7=txt.getText().toString();
 str7+="7";
 txt.setText(str7);
 break;
 case R.id.but_8:
 String str8=txt.getText().toString();
 str8+="8";
 txt.setText(str8);
 break;
 case R.id.but_9:
 String str9=txt.getText().toString();
 str9+="9";
 txt.setText(str9);
 break;
 case R.id.but_0:
 String strr=txt.getText().toString();
 strr+="0";
 txt.setText(strr);
 break;
 case R.id.but_dopt:
 String strd=txt.getText().toString();
 strd+=".";
 txt.setText(strd);
 break;

运算符按键:


 case R.id.but_add:
 String stradd=txt.getText().toString();
 if(stradd.equals(null)) 
 {
 return;
 }
 num1=Double.valueOf(stradd);
 txt.setText(null);
 op=1;
 break;
 case R.id.but_sub:
 String strsub=txt.getText().toString();
 if(strsub.equals(null))
 {
 return;
 }
 num1=Double.valueOf(strsub);
 txt.setText(null);
 op=2;
 break;
 case R.id.but_mut:
 String strmut=txt.getText().toString();
 if(strmut.equals(null))
 {
 return;
 }
 num1=Double.valueOf(strmut);
 txt.setText(null);
 op=3;
 break;
 case R.id.but_div:
 String strdiv=txt.getText().toString();
 if(strdiv.equals(null))
 {
 return;
 }
 num1=Double.valueOf(strdiv);
 txt.setText(null);
 op=4;
 break;

逻辑算法实现:虽然能进行简单的计算,但是因为把输入的数字放入num1和num2,进行计算,点击运算符只是获取符号前的数字,并不是显示运算符,所以我只是手动添加等式显示,即结果显示时只能显示两个数之间的加减乘除运算。

case R.id.but_equ:
 String strequ=txt.getText().toString();
 num2=Double.valueOf(strequ);
 txt.setText(null);
 switch (op){ 
 case 1:
 result=num1+num2;
 txt.setText(String.valueOf(num1)+"+"+String.valueOf(num2)+"="+String.valueOf(result));
 break;
 case 2:
 result=num1-num2;
 txt.setText(String.valueOf(num1)+"-"+String.valueOf(num2)+"="+String.valueOf(result));
 break;
 case 3:
 result=num1*num2;
 txt.setText(String.valueOf(num1)+"*"+String.valueOf(num2)+"="+String.valueOf(result));
 break;
 case 4:
 if (num2==0){
 txt. setText("除数不能为0!"); 
 }else{
 result=num1/num2;
 txt.setText(String.valueOf(num1)+"/"+String.valueOf(num2)+"="+String.valueOf(result));}
 break;
 default:
 result=0;
 break;
 }

三、运行结果

在编写这个计算器代码的过程中,收获了很多,对Android Studio的布局有了更多的认识,对它的操作也熟练了很多,也学会了怎样可以更快速,便捷地进行代码编写,在实践中学习,即使这次的代码还有很多要改进,修改的地方。

更多计算器功能实现,请点击专题: 计算器功能汇总 进行学习

关于Android计算器功能的实现,查看专题:Android计算器 进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/154251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号