日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

Android studio實現簡單計算器

瀏覽:124日期:2022-09-27 08:08:12

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

需求分析

在Android studio中設計并實現一個簡單的計算器,實現連續的加減乘除運算。

界面設計

采用網格GridLayout布局,設計了一個6行4列的網格,最上邊是一個EditText用來顯示用戶輸入的運算數字和運算符,以及相關的運算結果,其占4列,文本框大小為50dip;依次往下的界面分別設置了數字和運算符以及操作的按鈕,各行各列的每個按鈕的大小均設為26sp。

編程分析

設計了兩個文件:1、控制文件MainActivity.java,完成按鈕的處理事件以及實現加減乘除及其結果輸出的功能,主要包括:顯示activity_main.xml定義的用戶界面;與用戶界面程序中的組件建立關聯,并分別為每個組件注冊并實現監聽接口;根據具體輸入和條件進行運算并顯示結果等。2、布局文件activity_main.xml,完成計算器界面的網格布局設計,包括了一個文本編輯框和18個按鈕。

具體進度

第1天:對簡單計算器進行系統的功能和界面分析,形成自己大致的設計想法,然后根據老師建議的書本程序以及自己上網搜索的安卓項目的編程,系統地總結出自己編程的過程以及開始理解各類代碼。由于對移動編程這門課還不是很熟悉,所以對其中編程部分的理解為自己往后調試程序有很大的幫助。

第2天:開始敲代碼。由于第一次在Android studio上面編程,對這個軟件的各項操作都不熟悉,所以剛開始就在軟件摸索上面花費了較多的時間。由于此次設計的界面老師給了我們書本的模板,所以我選擇從簡單的布局文件的設計開始編程,一方面也方便自己熟悉Android studio。

第3天:開始根據自己的理解和想法開始設計并調試控制文件的程序。由于這部分設計到多種函數以及接口的設計以及實現,運用的是java,由于對過去學的java語言有些遺忘了,而且現在還要涉及關于新知識.xml的結合,所以在這部分花的時間比較長。期間出現了較多的bug,雖然調試起來很吃力,但最終一點點把程序調試成功還是挺開心的。

第4天:原本以為程序調試成功就好了,但是沒想到最后在AVD的各種選擇和配置、調用問題上花了更多的時間和精力。由于第一次接觸Android studio,所以對其中很多配置都不了解,也是第一次聽說AVD,在最終運行這個計算器APP的時候在AVD的選擇和配置失敗上卡了較長時間,通過百度以及請教同學,一步步地終于把最后這一步做好了。至此便完成了自己第一個簡單APP的開發。

心得體會

這是我的第一個安卓項目開發,這個計算器代碼的邏輯都比較簡單,然后其功能也很不完善,是一個比較粗糙的設計。即便如此,由于自己對Android studio應用程序設計的知識掌握得也不是很好,編程能力也比較弱,所以還是花了比較多的時間去研究和體會。但是,也正因為期間遇到的很多困難和bug,在自己一點點去設法解決的過程中也對這門課程的理論知識以及相關操作都有了更清晰的了解,現在明白了其中和大致框架和原理,為往后深入的學習和編程做好多一點基礎鞏固。

Android studio實現簡單計算器

控制文件MainActivity.java

package com.example.df.firstapp; import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button; //引用按鈕組件import android.widget.EditText; //引用文本編輯框組件import android.text.TextUtils; //TextUtils類用于處理字符串 //定義實現監聽接口的類MainActivitypublic class MainActivity extends AppCompatActivity implements View.OnClickListener { //聲明17個按鈕和一個文本編輯框 Button bt_num0,bt_num1,bt_num2,bt_num3,bt_num4,bt_num5,bt_num6,bt_num7,bt_num8,bt_num9,bt_delete,bt_div,bt_mult,bt_minus,bt_plus,bt_equal,bt_dot,bt_clear; private EditText et_calc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //顯示activity_main.xml定義的用戶界面 initViewAndListener(); //調用函數initViewAndListener() } //定義函數initViewAndListener(),用于與用戶界面程序中的組件建立關聯,并分別注冊監聽接口 private void initViewAndListener() { bt_num0 = (Button)findViewById(R.id.bt_num0); bt_num0.setOnClickListener(this); bt_num1 = (Button)findViewById(R.id.bt_num1); bt_num1.setOnClickListener(this); bt_num2 =(Button) findViewById(R.id.bt_num2); bt_num2.setOnClickListener(this); bt_num3 = (Button)findViewById(R.id.bt_num3); bt_num3.setOnClickListener(this); bt_num4 = (Button)findViewById(R.id.bt_num4); bt_num4.setOnClickListener(this); bt_num5 = (Button)findViewById(R.id.bt_num5); bt_num5.setOnClickListener(this); bt_num6 = (Button)findViewById(R.id.bt_num6); bt_num6.setOnClickListener(this); bt_num7 = (Button)findViewById(R.id.bt_num7); bt_num7.setOnClickListener(this); bt_num8 = (Button)findViewById(R.id.bt_num8); bt_num8.setOnClickListener(this); bt_num9 = (Button)findViewById(R.id.bt_num9); bt_num9.setOnClickListener(this); bt_delete = (Button)findViewById(R.id.bt_delete); bt_delete.setOnClickListener(this); bt_div = (Button)findViewById(R.id.bt_div); bt_div.setOnClickListener(this); bt_mult = (Button)findViewById(R.id.bt_mult); bt_mult.setOnClickListener(this); bt_minus = (Button)findViewById(R.id.bt_minus); bt_minus.setOnClickListener(this); bt_plus = (Button)findViewById(R.id.bt_plus); bt_plus.setOnClickListener(this); bt_equal = (Button)findViewById(R.id.bt_equal); bt_equal.setOnClickListener(this); et_calc = (EditText)findViewById(R.id.et_calc); bt_dot = (Button)findViewById(R.id.bt_dot); bt_dot.setOnClickListener(this); bt_clear = (Button)findViewById(R.id.bt_clear); bt_clear.setOnClickListener(this); } private boolean lastIsOperator; //記錄當前是否進行計算操作 private String lastOperators = ''; //記錄上一次進行計算操作的結果 private double firstNumber = 0D; //定義并初始化第一次的取值 private double sencondNumber = 0D; //定義并初始化第二次的取值 //onClick()方法,觸發OnClickListener接口 public void onClick(View v) { String currentText = et_calc.getText().toString(); //獲取當前文本編輯框的內容 String operatorNumber = ''; //定義并初始化操作數為”” if (currentText.equals('0')) { //若當前輸入數為0則設置文本編輯框為”” et_calc.setText(''); } operatorNumber = et_calc.getText().toString(); //根據編輯框的內容更改操作數值 if(!lastOperators.equals('')) //判斷上一次操作的數是否為空,非空則建立索引,隨之修改當前操作數 { int index = operatorNumber.lastIndexOf(lastOperators); operatorNumber = operatorNumber.substring(index+1); } //分別獲取按鈕的內容至文本編輯框 switch (v.getId()) { case R.id.bt_num0: et_calc.setText(et_calc.getText() + '0'); lastIsOperator = false; break; case R.id.bt_num1: et_calc.setText(et_calc.getText() + '1'); lastIsOperator = false; break; case R.id.bt_num2: et_calc.setText(et_calc.getText() + '2'); lastIsOperator = false; break; case R.id.bt_num3: et_calc.setText(et_calc.getText() + '3'); lastIsOperator = false; break; case R.id.bt_num4: et_calc.setText(et_calc.getText() + '4'); lastIsOperator = false; break; case R.id.bt_num5: et_calc.setText(et_calc.getText() + '5'); lastIsOperator = false; break; case R.id.bt_num6: et_calc.setText(et_calc.getText() + '6'); lastIsOperator = false; break; case R.id.bt_num7: et_calc.setText(et_calc.getText() + '7'); lastIsOperator = false; break; case R.id.bt_num8: et_calc.setText(et_calc.getText() + '8'); lastIsOperator = false; break; case R.id.bt_num9: et_calc.setText(et_calc.getText() + '9'); lastIsOperator = false; break; case R.id.bt_dot: et_calc.setText(et_calc.getText() + '.'); lastIsOperator = false; break; //歸零按鈕,將當前操作數直接清零 case R.id.bt_clear: et_calc.setText(''); lastIsOperator = false; firstNumber=0D; sencondNumber=0D; lastOperators='='; break; //清除按鈕,若當前文本編輯框內容為空,點擊一次則刪除一個字符串 case R.id.bt_delete: if (TextUtils.isEmpty(et_calc.getText())) { return; } lastIsOperator = false; et_calc.setText(currentText.substring(0, currentText.length() - 1).length() > 0 ? currentText.substring(0, currentText.length() - 1) : '0'); break; //計算按鈕,若當前內容非空、或者以及上一次有操作記錄且記錄不是”=”的情況下,將當前的操作記錄設置為+、-、*、/、= case R.id.bt_div: if ((TextUtils.isEmpty(et_calc.getText()) || lastIsOperator) && !lastOperators.equals('=')) { return; } opratorCalc(operatorNumber,'÷'); lastIsOperator = true; et_calc.setText(et_calc.getText() + '÷'); lastOperators = '÷'; break; case R.id.bt_mult: if ((TextUtils.isEmpty(et_calc.getText()) || lastIsOperator) && !lastOperators.equals('=')) { return; } opratorCalc(operatorNumber,'*'); lastIsOperator = true; et_calc.setText(et_calc.getText() + '*'); lastOperators = '*'; break; case R.id.bt_minus: if ((TextUtils.isEmpty(et_calc.getText()) || lastIsOperator) && !lastOperators.equals('=')) { return; } opratorCalc(operatorNumber,'-'); lastIsOperator = true; et_calc.setText(et_calc.getText() + '-'); lastOperators = '-'; break; case R.id.bt_plus: if ((TextUtils.isEmpty(et_calc.getText()) || lastIsOperator) && !lastOperators.equals('=')) { return; } opratorCalc(operatorNumber,'+'); lastIsOperator = true; et_calc.setText(et_calc.getText() + '+'); lastOperators = '+'; break; case R.id.bt_equal: double result = 0D; if(TextUtils.isEmpty(lastOperators)) { return; } opratorResult(operatorNumber); sencondNumber = 0D; lastOperators ='='; lastIsOperator = true; et_calc.setText(et_calc.getText() + 'n=' + String.valueOf(firstNumber)); break; } } //運算函數,按具體操作進行+、-、*、/的運算 private void operate(String operatorNumber) { if(sencondNumber != 0D) //計算情況一:第二次輸入的數不為0 { if(lastOperators.equals('÷')) { sencondNumber = sencondNumber / Double.parseDouble(operatorNumber); firstNumber = firstNumber / sencondNumber; } else if(lastOperators.equals('*')) { sencondNumber = sencondNumber * Double.parseDouble(operatorNumber); firstNumber = firstNumber * sencondNumber; } else if(lastOperators.equals('+')) { sencondNumber = Double.parseDouble(operatorNumber); firstNumber = firstNumber + sencondNumber; } else if(lastOperators.equals('-')) { sencondNumber = Double.parseDouble(operatorNumber); firstNumber = firstNumber - sencondNumber; } } Else //計算情況二:第二次輸入的數為0 { if(lastOperators.equals('÷')) { firstNumber = firstNumber / Double.parseDouble(operatorNumber); } else if(lastOperators.equals('*')) { firstNumber = firstNumber * Double.parseDouble(operatorNumber); } else if(lastOperators.equals('+')) { firstNumber = firstNumber + Double.parseDouble(operatorNumber); } else if(lastOperators.equals('-')) { firstNumber= firstNumber - Double.parseDouble(operatorNumber); } } } //分別返回計算結果public void opratorResult(String operatorNumber) { operate(operatorNumber); }//按當前計算結果進行下一次的數據輸入及計算 public void opratorCalc(String operatorNumber,String currentOprator) { if(TextUtils.isEmpty(lastOperators)) { firstNumber = Double.parseDouble(operatorNumber); return; } if(lastOperators.equals(currentOprator)) { if(lastOperators.equals('÷')) { firstNumber = firstNumber / Double.parseDouble(operatorNumber); } else if(lastOperators.equals('*')) { firstNumber = firstNumber * Double.parseDouble(operatorNumber); } else if(lastOperators.equals('+')) { firstNumber = firstNumber + Double.parseDouble(operatorNumber); } else if(lastOperators.equals('-')) { firstNumber = firstNumber - Double.parseDouble(operatorNumber); } return; } operate(operatorNumber); } }

布局文件activity_main.xml

<?xml version='1.0' encoding='utf-8'?><GridLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='wrap_content' android:columnCount='4' //設置了一個4列6行的網格 android:rowCount='6' tools:context='.MainActivity'> <EditText android: android:layout_width='match_parent' android:layout_height='wrap_content' android:layout_columnSpan='4' //該組件占據4列的位置 android:layout_marginLeft='4px' android:gravity='left'android:layout_row='0' android:background='#eee' android:textSize='50dip'/> <Button android: android:layout_column='3' android:layout_row='1' android:text='清除' android:textSize='26sp'/> <Button android: android:layout_column='0' android:layout_row='1' android:text='歸零' android:textSize='26sp'/> <Button android: android:layout_column='0' android:layout_row='2' android:text='1' android:textSize='26sp'/> <Button android: android:layout_column='1' android:layout_row='2' android:text='2' android:textSize='26sp'/> <Button android: android:layout_column='2' android:layout_row='2' android:text='3' android:textSize='26sp'/> <Button android: android:layout_column='3' android:layout_row='2' android:text='+' android:textSize='26sp'/> <Button android: android:layout_column='0' android:layout_row='3' android:text='4'android:textSize='26sp' /> <Button android: android:layout_column='1' android:layout_row='3' android:text='5' android:textSize='26sp'/> <Button android: android:layout_column='2' android:layout_row='3' android:text='6' android:textSize='26sp'/> <Button android: android:layout_column='3' android:layout_row='3' android:text='-'android:textSize='26sp' /> <Button android: android:layout_column='0' android:layout_row='4' android:text='7' android:textSize='26sp'/> <Button android: android:layout_column='1' android:layout_row='4' android:text='8' android:textSize='26sp'/> <Button android: android:layout_column='2' android:layout_row='4' android:text='9'android:textSize='26sp' /> <Button android: android:layout_column='3' android:layout_row='4' android:text='*' android:textSize='26sp' /> <Button android: android:layout_column='0' android:layout_row='5' android:text='.'android:textSize='26sp' /> <Button android: android:layout_column='1' android:layout_row='5' android:text='0'android:textSize='26sp' /> <Button android: android:layout_column='2' android:layout_row='5' android:text='='android:textSize='26sp' /> <Button android: android:layout_column='3' android:layout_row='5' android:text='/'android:textSize='26sp' /></GridLayout>

關于計算器的精彩文章請查看《計算器專題》 ,更多精彩等你來發現!

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

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精久久一区二区| 日本va欧美va瓶| 伊人精品一区| 欧美激情aⅴ一区二区三区| 蜜臀久久99精品久久久久宅男| 日韩欧美一区二区三区在线视频| 国产精品18| 国产精品一区二区三区四区在线观看 | 久久精品国产亚洲夜色av网站| 国产麻豆精品| 青草国产精品| 视频在线观看一区二区三区| 久久婷婷一区| 久久久夜精品| 欧美成人亚洲| 欧美一级精品| 福利在线一区| 激情不卡一区二区三区视频在线| 国产日韩一区二区三免费高清 | 国产精品99在线观看| 国产精品网在线观看| 日韩国产欧美一区二区三区| 日韩专区欧美专区| 午夜日韩在线| 亚洲成人精品| 久久久久亚洲| 欧美日韩国产免费观看| 午夜日韩在线| 亚洲一区二区三区中文字幕在线观看| 久久五月天小说| 精品中文一区| 好吊视频一区二区三区四区| aa亚洲婷婷| 亚洲日韩视频| 日本中文字幕一区二区| 日韩精品免费视频人成| 国产探花在线精品| 国产午夜一区| 久久精品国产网站| 日韩国产欧美在线播放| 国产精品日本一区二区不卡视频 | 欧美专区18| 亚洲三级视频| 国产免费av一区二区三区| 欧美日韩一区二区国产 | 久久爱www.| 国产粉嫩在线观看| 亚洲精品电影| 日韩av成人高清| 欧美一区成人| 国产极品一区| 特黄毛片在线观看| 亚洲成人日韩| 日韩在线电影| 欧美精品二区| 久久青草久久| 亚洲综合激情在线| 久久国产精品免费一区二区三区| 911精品国产| 五月亚洲婷婷 | 国产精品任我爽爆在线播放 | 日韩美女国产精品| 免费高潮视频95在线观看网站| 中文字幕亚洲在线观看| 最近高清中文在线字幕在线观看1| 乱人伦精品视频在线观看| 精品一区视频| 亚欧洲精品视频在线观看| 中文字幕在线免费观看视频| 手机精品视频在线观看| 国产在线日韩精品| 亚洲欧美日韩国产| 国产日产一区| 久久美女精品| 国产剧情在线观看一区| 国产一区导航| 国产精久久久| 国产一区清纯| 欧美日本不卡高清| 久久久久免费av| 日韩区欧美区| 亚洲不卡av不卡一区二区| 国产美女精品| 国产在线日韩精品| 亚洲国产日韩欧美在线| 国产亚洲精品美女久久| 国产高清一区| 麻豆91小视频| 久热re这里精品视频在线6| 欧美成人aaa| 国产精品日本| 国产精品毛片视频| 一区二区国产在线| 日韩成人综合| 国产精品主播| 视频一区二区三区中文字幕| 日韩88av| 日本三级亚洲精品| 免费av一区| 久久最新视频| 尤物精品在线| 日韩国产在线| 国产欧美丝祙| 国产精品人人爽人人做我的可爱| 精品理论电影在线| 亚洲精品欧美| 欧美日韩国产免费观看视频| 欧美日韩一视频区二区| 日韩午夜一区| 婷婷综合六月| 亚洲精品黄色| 丁香六月综合| 国产乱子精品一区二区在线观看| 黄色亚洲免费| 久久久久久一区二区| 日韩一区精品字幕| 精品亚洲美女网站| 国产精品久久久久久妇女| 亚洲少妇在线| 97精品国产| 国产精品传媒麻豆hd| 国产乱码精品一区二区亚洲| 蜜臀a∨国产成人精品| 欧美中文一区二区| 精品国产亚洲一区二区三区在线| 免费在线观看一区二区三区| 久久久久国产精品一区三寸| 国产精品1区| 91福利精品在线观看| 老鸭窝毛片一区二区三区| 欧美成人a交片免费看| 久久久久九九精品影院| 97精品久久| 一区二区国产在线观看| 亚洲h色精品| 少妇精品导航| 亚洲伦乱视频| 美女av在线免费看| 久久免费影院| 国产精品久久久久久久免费软件| 亚洲aⅴ网站| 麻豆精品网站| 久久亚洲电影| 免费av一区二区三区四区| 久久亚洲专区| 视频福利一区| 色爱av综合网| 日韩在线中文| 日韩在线中文| 亚洲电影有码| 久久久久久久久99精品大| 久久久久久久久久久妇女 | 免费久久久久久久久| 欧美特黄a级高清免费大片a级| 国内亚洲精品| 蜜臀久久99精品久久一区二区| 香蕉久久99| 午夜久久一区| 成人av二区| 亚洲一区不卡| 免费在线观看日韩欧美| 欧美日韩精品一本二本三本| 另类av一区二区| 日韩精品一级中文字幕精品视频免费观看| 国精品一区二区三区| 欧美另类综合| 中文字幕亚洲影视| 欧美片第1页综合| 欧美国产先锋| 精品久久久久中文字幕小说| 欧美久久久网站| 日韩啪啪电影网| 成人av动漫在线观看| 激情婷婷欧美| 久久国产精品99国产| 日韩一区网站| 久久精品国产99国产精品| 综合日韩av| 日韩中文在线电影| 免费的成人av| 欧美欧美黄在线二区| 精品午夜久久| 久久久久久久久丰满| 99热精品在线| 日韩激情网站| 成人黄色av| 石原莉奈在线亚洲三区| 欧美一区精品| 精品国产亚洲一区二区在线观看| 日本在线精品| 亚洲一区二区小说| 国产福利资源一区| 欧美手机在线| 欧美一区影院| 国产精品88久久久久久| 日本一区二区三区视频在线看| 欧美激情视频一区二区三区在线播放| 日韩国产一区二区| 蜜臀av亚洲一区中文字幕| 国产情侣一区|