最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Studio實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能

 更新時(shí)間:2020年03月30日 17:22:36   作者:c77777_  
這篇文章主要為大家詳細(xì)介紹了Android Studio實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

程序步驟:

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

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

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

程序代碼設(shè)計(jì):

一、界面布局

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

布局文件activity_main.xml:

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

<!-- 設(shè)置一個(gè)網(wǎng)格布局,網(wǎng)格為6行4列-->
 <GridLayout
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:columnCount="4" //設(shè)置網(wǎng)格列數(shù)
 android:rowCount="6" //設(shè)置網(wǎng)格行數(shù)
 tools:layout_editor_absoluteX="73dp"
 tools:layout_editor_absoluteY="294dp">
<!--第一行-->
 <TextView
 android:id="@+id/textView" //設(shè)置id屬性值
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_columnSpan="4" //該組件占據(jù)4列的位置
 android:textSize="26sp" />
<!--第二行-->
 <Button
 android:id="@+id/butCancel"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_columnSpan="4"
 android:text="清除"
 android:textSize="26sp" />
 <Button
 android:id="@+id/but_1"
 android:text="1"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_2"
 android:text="2"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_3"
 android:text="3"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_add"
 android:text="+"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_4"
 android:text="4"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_5"
 android:text="5"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_6"
 android:text="6"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_sub"
 android:text="-"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_7"
 android:text="7"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_8"
 android:text="8"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_9"
 android:text="9"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_mut"
 android:text="*"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_dopt"
 android:text="."
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_0"
 android:text="0"
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_equ"
 android:text="="
 android:textSize="26sp" />
 
 <Button
 android:id="@+id/but_div"
 android:text="/"
 android:textSize="26sp" />
 
</GridLayout>

二、設(shè)計(jì)控制文件MainActivity:

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

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

public class MainActivity extends AppCompatActivity {
 
 private TextView txt; /*顯示計(jì)算過(guò)程及結(jié)果*/
 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; /*計(jì)算結(jié)果*/
 int op=0; /*判斷操作數(shù)*/
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 txt=(TextView) findViewById(R.id.textView); /*與用戶界面程序中組件建立關(guān)聯(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); /*點(diǎn)*/
 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());
 }

實(shí)現(xiàn)監(jiān)聽(tīng)時(shí)間處理:

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

class mClick implements View.OnClickListener
 {
 public void onClick(View v) {
 
 switch(v.getId()){ /*用swtich()方法,判斷點(diǎn)擊按鈕的id*/
 case R.id.butCancel: /*清除,直接將輸入的所有符號(hào)清空*/
 txt.setText(null);
 break;
 /*數(shù)字,小數(shù)點(diǎn)按鍵*/
 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;

運(yùn)算符按鍵:

/*運(yùn)算符按鍵*/
 case R.id.but_add:
 String stradd=txt.getText().toString();/*按運(yùn)算符,獲取要計(jì)算的數(shù)字,并放入num1等待計(jì)算*/
 if(stradd.equals(null)) /*判斷按運(yùn)算符前是否輸入要計(jì)算的數(shù)字,若為空,則返回*/
 {
 return;
 }
 num1=Double.valueOf(stradd);/*將獲取的字符串轉(zhuǎn)化為double類型以便計(jì)算*/
 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;

邏輯算法實(shí)現(xiàn):雖然能進(jìn)行簡(jiǎn)單的計(jì)算,但是因?yàn)榘演斎氲臄?shù)字放入num1和num2,進(jìn)行計(jì)算,點(diǎn)擊運(yùn)算符只是獲取符號(hào)前的數(shù)字,并不是顯示運(yùn)算符,所以我只是手動(dòng)添加等式顯示,即結(jié)果顯示時(shí)只能顯示兩個(gè)數(shù)之間的加減乘除運(yùn)算。

case R.id.but_equ:
 String strequ=txt.getText().toString();
 num2=Double.valueOf(strequ);
 txt.setText(null);
 switch (op){ /*用switch函數(shù)來(lái)判斷進(jìn)行何種操作,實(shí)施運(yùn)算并得出結(jié)果*/
 case 1:
 result=num1+num2;
 txt.setText(String.valueOf(num1)+"+"+String.valueOf(num2)+"="+String.valueOf(result));/*獲取結(jié)果并將其轉(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,否則報(bào)錯(cuò)*/
 }else{
 result=num1/num2;
 txt.setText(String.valueOf(num1)+"/"+String.valueOf(num2)+"="+String.valueOf(result));}
 break;
 default:
 result=0;
 break;
 }

三、運(yùn)行結(jié)果

在編寫(xiě)這個(gè)計(jì)算器代碼的過(guò)程中,收獲了很多,對(duì)Android Studio的布局有了更多的認(rèn)識(shí),對(duì)它的操作也熟練了很多,也學(xué)會(huì)了怎樣可以更快速,便捷地進(jìn)行代碼編寫(xiě),在實(shí)踐中學(xué)習(xí),即使這次的代碼還有很多要改進(jìn),修改的地方。

更多計(jì)算器功能實(shí)現(xiàn),請(qǐng)點(diǎn)擊專題: 計(jì)算器功能匯總 進(jìn)行學(xué)習(xí)

關(guān)于Android計(jì)算器功能的實(shí)現(xiàn),查看專題:Android計(jì)算器 進(jìn)行學(xué)習(xí)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何在WorkManager中處理異步任務(wù)詳解

    如何在WorkManager中處理異步任務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于如何在WorkManager中處理異步任務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Android 修改app圖標(biāo)和名稱的方法

    Android 修改app圖標(biāo)和名稱的方法

    下面小編就為大家分享一篇Android 修改app圖標(biāo)和名稱的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Android?Gradle模塊依賴替換使用技巧

    Android?Gradle模塊依賴替換使用技巧

    這篇文章主要為大家介紹了Android?Gradle模塊依賴替換使用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Android設(shè)置個(gè)性化Dialog小圖標(biāo)的方法

    Android設(shè)置個(gè)性化Dialog小圖標(biāo)的方法

    這篇文章主要介紹了Android設(shè)置個(gè)性化Dialog小圖標(biāo)的方法,涉及Android針對(duì)系統(tǒng)資源的設(shè)置與調(diào)用相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • Android適配器Adapter與ListView和RecycleView的簡(jiǎn)單使用

    Android適配器Adapter與ListView和RecycleView的簡(jiǎn)單使用

    本文將為大家介紹Android開(kāi)發(fā)中常用的適配器(Adapter)概念,以及ListView和RecycleView的簡(jiǎn)單使用方法,需要的朋友可以參考下
    2023-05-05
  • Android Handler源碼深入探究

    Android Handler源碼深入探究

    handler其實(shí)就是主線程在起了一個(gè)子線程,子線程運(yùn)行并生成Message,Looper獲取message并傳遞給Handler,Handler逐個(gè)獲取子線程中的Message
    2022-08-08
  • Android  Spinner列表選擇框的應(yīng)用

    Android Spinner列表選擇框的應(yīng)用

    這篇文章主要介紹了Android Spinner列表選擇框的應(yīng)用的相關(guān)資料,這里對(duì)spinner的屬性和常用事件和數(shù)據(jù)綁定都做了介紹,需要朋友可以參考下
    2017-07-07
  • android 獲取手機(jī)內(nèi)存及 內(nèi)存可用空間的方法

    android 獲取手機(jī)內(nèi)存及 內(nèi)存可用空間的方法

    下面小編就為大家?guī)?lái)一篇android 獲取手機(jī)內(nèi)存及SD卡內(nèi)存可用空間的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱

    Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Flutter打包apk報(bào)錯(cuò)Your?app?isn't?using?AndroidX解決

    Flutter打包apk報(bào)錯(cuò)Your?app?isn't?using?AndroidX解決

    這篇文章主要為大家介紹了Flutter打包apk報(bào)錯(cuò)Your?app?isn't?using?AndroidX解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論

凭祥市| 夏津县| 稷山县| 洞口县| 甘德县| 阳曲县| 阿拉善右旗| 平凉市| 澳门| 融水| 嘉荫县| 海伦市| 东城区| 奇台县| 同仁县| 宜阳县| 阿鲁科尔沁旗| 林州市| 体育| 南华县| 鱼台县| 宁城县| 横峰县| 新干县| 佛坪县| 泰宁县| 新和县| 得荣县| 司法| 从江县| 南安市| 铜川市| 泉州市| 巧家县| 长春市| 罗田县| 纳雍县| 西丰县| 竹山县| 浦北县| 保山市|