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

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

Android Studio實現簡單計算器功能

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

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

程序步驟:

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

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

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

程序代碼設計:

一、界面布局

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

Android Studio實現簡單計算器功能

布局文件activity_main.xml:

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

<!-- 設置一個網格布局,網格為6行4列--> <GridLayout android:layout_width='fill_parent' android:layout_height='fill_parent' android:columnCount='4' //設置網格列數 android:rowCount='6' //設置網格行數 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' //該組件占據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:

建立與程序中組件與用戶界面程序組件的關聯,并編寫設計按鈕的監聽事件處理代碼。點擊數字和小數點按鈕在文本標簽輸入并顯示要計算的數字,點擊運算符按鈕獲取前面的數字,放進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()){ /*用swtich()方法,判斷點擊按鈕的id*/ case R.id.butCancel: /*清除,直接將輸入的所有符號清空*/ txt.setText(null); break; /*數字,小數點按鍵*/ case R.id.but_1: String str1=txt.getText().toString(); /*獲取輸入內容并轉為string類型/ str1+='1'; /*拼接字符串*/ 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();/*按運算符,獲取要計算的數字,并放入num1等待計算*/ if(stradd.equals(null)) /*判斷按運算符前是否輸入要計算的數字,若為空,則返回*/ { return; } num1=Double.valueOf(stradd);/*將獲取的字符串轉化為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;

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

case R.id.but_equ: String strequ=txt.getText().toString(); num2=Double.valueOf(strequ); txt.setText(null); switch (op){ /*用switch函數來判斷進行何種操作,實施運算并得出結果*/ 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!'); /*規定除數不能為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實現簡單計算器功能

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

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

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

標簽: Android
相關文章:
主站蜘蛛池模板: 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | U拓留学雅思一站式服务中心_留学申请_雅思托福培训 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | 真空泵厂家_真空泵机组_水环泵_旋片泵_罗茨泵_耐腐蚀防爆_中德制泵 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 浙江宝泉阀门有限公司| 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 浙江寺庙设计-杭州寺院设计-宁波寺庙规划_汉匠 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 贵州成人高考网_贵州成考网| 半容积式换热器_北京浮动盘管换热器厂家|北京亿丰上达 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 脉冲除尘器,除尘器厂家-淄博机械| 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 | 氧化锆陶瓷_氧化锆陶瓷加工_氧化锆陶瓷生产厂家-康柏工业陶瓷有限公司 | 技德应用|