小編給大家分享一下Android Studio如何實(shí)現(xiàn)簡單計(jì)算器功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站維護(hù)、成都服務(wù)器托管解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球超過千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
具體內(nèi)容如下
程序步驟:
(1)在布局文件定義一些計(jì)算器界面的文本框,按鈕等組件。
(2)在Activity中獲取組件實(shí)例。
(3)通過swtich函數(shù),判斷輸入的內(nèi)容,并進(jìn)行相應(yīng)操作,通過getText()獲取文本內(nèi)容,setText()顯示。
程序代碼設(shè)計(jì):
一、界面布局
參考書本例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)算符加減乘除以及等于號。界面效果圖如下

布局文件activity_main.xml:
定義一些計(jì)算器界面的文本框,按鈕等組件,因?yàn)橐c控制文件MainActivity.java建立關(guān)聯(lián),所以每一個(gè)組件都需要設(shè)置id屬性值。要注意的是,打開布局文件時(shí),我一開始參照書本,把原來自動(dòng)給出的抬頭改了,導(dǎo)致界面只能出現(xiàn)文本標(biāo)簽和清除按鈕,經(jīng)過修改,我發(fā)現(xiàn)不能修改原來的抬頭,直接在下面再設(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),并編寫設(shè)計(jì)按鈕的監(jiān)聽事件處理代碼。點(diǎn)擊數(shù)字和小數(shù)點(diǎn)按鈕在文本標(biāo)簽輸入并顯示要計(jì)算的數(shù)字,點(diǎn)擊運(yùn)算符按鈕獲取前面的數(shù)字,放進(jìn)num1,按=運(yùn)算符時(shí),獲取前面的數(shù)字,再通過op判斷操作數(shù),進(jìn)行加減乘除運(yùn)算,輸出結(jié)果。
關(guān)聯(lián)用戶界面:
public class MainActivity extends AppCompatActivity {
private TextView txt; /*顯示計(jì)算過程及結(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)聽時(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: /*清除,直接將輸入的所有符號清空*/
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)行簡單的計(jì)算,但是因?yàn)榘演斎氲臄?shù)字放入num1和num2,進(jìn)行計(jì)算,點(diǎn)擊運(yùn)算符只是獲取符號前的數(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ù)來判斷進(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é)果
在編寫這個(gè)計(jì)算器代碼的過程中,收獲了很多,對Android Studio的布局有了更多的認(rèn)識,對它的操作也熟練了很多,也學(xué)會(huì)了怎樣可以更快速,便捷地進(jìn)行代碼編寫,在實(shí)踐中學(xué)習(xí),即使這次的代碼還有很多要改進(jìn),修改的地方。

以上是“Android Studio如何實(shí)現(xiàn)簡單計(jì)算器功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:AndroidStudio如何實(shí)現(xiàn)簡單計(jì)算器功能
網(wǎng)站URL:http://www.chinadenli.net/article32/ihoesc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、微信小程序、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)、App設(shè)計(jì)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)