电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Android Studio實現(xiàn)簡單計算器功能

瀏覽:43日期:2022-09-25 09:40:06

本文實例為大家分享了Android Studio實現(xiàn)簡單計算器功能的具體代碼,供大家參考,具體內(nèi)容如下

程序步驟:

(1)在布局文件定義一些計算器界面的文本框,按鈕等組件。

(2)在Activity中獲取組件實例。

(3)通過swtich函數(shù),判斷輸入的內(nèi)容,并進行相應操作,通過getText()獲取文本內(nèi)容,setText()顯示。

程序代碼設計:

一、界面布局

參考書本例2-9,應用網(wǎng)格布局設計計算器界面,在設計區(qū)域設置一個6行4列的網(wǎng)格布局,第一行為顯示數(shù)據(jù)的文本標簽,第二行為清除數(shù)據(jù)的按鈕,即清空所有輸入的數(shù)據(jù),3-6行劃分為均等的16個按鈕,分別代表數(shù)字0-9,小數(shù)點,和運算符加減乘除以及等于號。界面效果圖如下

Android Studio實現(xiàn)簡單計算器功能

布局文件activity_main.xml:

定義一些計算器界面的文本框,按鈕等組件,因為要與控制文件MainActivity.java建立關聯(lián),所以每一個組件都需要設置id屬性值。要注意的是,打開布局文件時,我一開始參照書本,把原來自動給出的抬頭改了,導致界面只能出現(xiàn)文本標簽和清除按鈕,經(jīng)過修改,我發(fā)現(xiàn)不能修改原來的抬頭,直接在下面再設置網(wǎng)格布局。

<!-- 設置一個網(wǎng)格布局,網(wǎng)格為6行4列--> <GridLayout android:layout_width='fill_parent' android:layout_height='fill_parent' android:columnCount='4' //設置網(wǎng)格列數(shù) android:rowCount='6' //設置網(wǎng)格行數(shù) tools:layout_editor_absoluteX='73dp' tools:layout_editor_absoluteY='294dp'><!--第一行--> <TextView android: //設置id屬性值 android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_columnSpan='4' //該組件占據(jù)4列的位置 android:textSize='26sp' /><!--第二行--> <Button android: android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_columnSpan='4' android:text='清除' android:textSize='26sp' /> <Button android: android:text='1' android:textSize='26sp' /> <Button android: android:text='2' android:textSize='26sp' /> <Button android: android:text='3' android:textSize='26sp' /> <Button android: android:text='+' android:textSize='26sp' /> <Button android: android:text='4' android:textSize='26sp' /> <Button android: android:text='5' android:textSize='26sp' /> <Button android: android:text='6' android:textSize='26sp' /> <Button android: android:text='-' android:textSize='26sp' /> <Button android: android:text='7' android:textSize='26sp' /> <Button android: android:text='8' android:textSize='26sp' /> <Button android: android:text='9' android:textSize='26sp' /> <Button android: android:text='*' android:textSize='26sp' /> <Button android: android:text='.' android:textSize='26sp' /> <Button android: android:text='0' android:textSize='26sp' /> <Button android: android:text='=' android:textSize='26sp' /> <Button android: android:text='/' android:textSize='26sp' /> </GridLayout>

二、設計控制文件MainActivity:

建立與程序中組件與用戶界面程序組件的關聯(lián),并編寫設計按鈕的監(jiān)聽事件處理代碼。點擊數(shù)字和小數(shù)點按鈕在文本標簽輸入并顯示要計算的數(shù)字,點擊運算符按鈕獲取前面的數(shù)字,放進num1,按=運算符時,獲取前面的數(shù)字,再通過op判斷操作數(shù),進行加減乘除運算,輸出結果。

關聯(lián)用戶界面:

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; /*判斷操作數(shù)*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txt=(TextView) findViewById(R.id.textView); /*與用戶界面程序中組件建立關聯(lián)*/ 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()); }

實現(xiàn)監(jiān)聽時間處理:

數(shù)字,小數(shù)點按鍵:

class mClick implements View.OnClickListener { public void onClick(View v) { switch(v.getId()){ /*用swtich()方法,判斷點擊按鈕的id*/ case R.id.butCancel: /*清除,直接將輸入的所有符號清空*/ txt.setText(null); break; /*數(shù)字,小數(shù)點按鍵*/ case R.id.but_1: String str1=txt.getText().toString(); /*獲取輸入內(nèi)容并轉(zhuǎn)為string類型/ str1+='1'; /*拼接字符串*/ txt.setText(str1); /*顯示輸入內(nèi)容*/ 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();/*按運算符,獲取要計算的數(shù)字,并放入num1等待計算*/ if(stradd.equals(null)) /*判斷按運算符前是否輸入要計算的數(shù)字,若為空,則返回*/ { return; } num1=Double.valueOf(stradd);/*將獲取的字符串轉(zhuǎn)化為double類型以便計算*/ 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;

邏輯算法實現(xiàn):雖然能進行簡單的計算,但是因為把輸入的數(shù)字放入num1和num2,進行計算,點擊運算符只是獲取符號前的數(shù)字,并不是顯示運算符,所以我只是手動添加等式顯示,即結果顯示時只能顯示兩個數(shù)之間的加減乘除運算。

case R.id.but_equ: String strequ=txt.getText().toString(); num2=Double.valueOf(strequ); txt.setText(null); switch (op){ /*用switch函數(shù)來判斷進行何種操作,實施運算并得出結果*/ case 1: result=num1+num2; txt.setText(String.valueOf(num1)+'+'+String.valueOf(num2)+'='+String.valueOf(result));/*獲取結果并將其轉(zhuǎn)為字符串輸出*/ 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('除數(shù)不能為0!'); /*規(guī)定除數(shù)不能為0,否則報錯*/ }else{ result=num1/num2; txt.setText(String.valueOf(num1)+'/'+String.valueOf(num2)+'='+String.valueOf(result));} break; default: result=0; break; }

三、運行結果

在編寫這個計算器代碼的過程中,收獲了很多,對Android Studio的布局有了更多的認識,對它的操作也熟練了很多,也學會了怎樣可以更快速,便捷地進行代碼編寫,在實踐中學習,即使這次的代碼還有很多要改進,修改的地方。

Android Studio實現(xiàn)簡單計算器功能

更多計算器功能實現(xiàn),請點擊專題: 計算器功能匯總 進行學習

關于Android計算器功能的實現(xiàn),查看專題:Android計算器 進行學習。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Android
相關文章:
主站蜘蛛池模板: 磷酸肌酸二钠盐,肌酐磷酰氯-沾化欣瑞康生物科技 | 手持式3d激光扫描仪-便携式三维立体扫描仪-北京福禄克斯 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 液氨泵,液化气泵-淄博「亚泰」燃气设备制造有限公司 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 宜兴紫砂壶知识分享 - 宜兴壶人| 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 首页-瓜尔胶系列-化工单体系列-油田压裂助剂-瓜尔胶厂家-山东广浦生物科技有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 市政路灯_厂家-淄博信达电力科技有限公司 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 视频直播 -摄影摄像-视频拍摄-直播分发 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 |