Android Studio實現簡單計算器功能
本文例項為大家分享了Android Studio實現簡單計算器功能的具體程式碼,供大家參考,具體內容如下
程式步驟:
(1)在佈局檔案定義一些計算器介面的文字框,按鈕等元件。
(2)在Activity中獲取元件例項。
(3)通過swtich函式,判斷輸入的內容,並進行相應操作,通過getText()獲取文字內容,setText()顯示。
程式程式碼設計:
一、介面佈局
參考書本例2-9,應用網格佈局設計計算器介面,在設計區域設定一個6行4列的網格佈局,第一行為顯示資料的文字標籤,第二行為清除資料的按鈕,即清空所有輸入的資料,3-6行劃分為均等的16個按鈕,分別代表數字0-9,小數點,和運算子加減乘除以及等於號。介面效果圖如下
佈局檔案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="@+id/textView" //設定id屬性值 android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_columnSpan="4" //該元件佔據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>
二、設計控制檔案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計算器功能的實現,檢視專題:Android計算器 進行學習。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。