溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

10天學(xué)通Android開發(fā)(5)-項目實戰(zhàn):計算器

發(fā)布時間:2020-07-26 17:42:40 來源:網(wǎng)絡(luò) 閱讀:368 作者:wanxl 欄目:移動開發(fā)

項目實戰(zhàn):實現(xiàn)一個簡單計算器

 

  1. 界面設(shè)計

1)拖進(jìn)一個大文本,整屏,設(shè)計各個數(shù)字及運算,用Table來存放。

<TableLayout

       android:layout_width="fill_parent"

       android:layout_height="wrap_content">

 

        <TableRow

           android:id="@+id/tableRow1"

           android:layout_width="fill_parent"

           android:layout_height="wrap_content">

            <Button

               android:id="@+id/btn1"

                 android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_weight="1"

                android:text="1"></Button>

              <Button

                android:id="@+id/btn2"

                 android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_weight="1"

                android:text="2"></Button

 

2實現(xiàn)算法,一個數(shù)字一個操作符號,執(zhí)行第二個操作符號時前面就運算,有三項就執(zhí)行運算,用數(shù)組記錄,創(chuàng)建種類類:

publicclass Types {

 

   publicstaticfinalintADD = 1;

   publicstaticfinalintSUB = 2;

   publicstaticfinalintX = 3;

   publicstaticfinalintDIV = 4;

   publicstaticfinalintNUM = 5;

  

}

3)存入數(shù)字或符號,項類

publicclass Item {

 

   public Item(double value,int type){

      this.value=value;

      this.type=type;      

     

   }

   publicdoublevalue=0;

   publicinttype=0;

  

  

}

4)定義數(shù)組,存放內(nèi)容為Item

private List<Item>items = new ArrayList<Item>();

 

(5) 如果輸入數(shù)字,直接添加:

publicvoid onClick(View v) {

      switch (v.getId()) {

      case R.id.btn0:

          tvScreen.append("0");

          break;

      case R.id.btn1:

          tvScreen.append("1");

          break;

      case R.id.btn2:

          tvScreen.append("2");

          break;

。。。。。

6)實現(xiàn)相加

case R.id.btnAdd:

          items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.NUM));

 

判斷是否有三項了,寫成一個方法:

          checkAndCompute();

 

實現(xiàn):

publicvoid checkAndCompute(){

      if (items.size()>=3) {

         

          double a = items.get(0).value;

          double b = items.get(2).value;

          int opt = items.get(1).type;

         

          items.clear();

         

          switch (opt) {

          case Types.ADD:

             items.add(new Item(a+b, Types.NUM));

             break;

          case Types.SUB:

             items.add(new Item(a-b, Types.NUM));

             break;

          case Types.X:

             items.add(new Item(a*b, Types.NUM));

             break;

          case Types.DIV:

             items.add(new Item(a/b, Types.NUM));

             break;

          }

      }

   }

 

7)結(jié)構(gòu)保存,并且屏幕清空

 

          items.add(new Item(0, Types.ADD));

          tvScreen.setText("");

          break;

 

(8)實現(xiàn)減等其它運算

 case R.id.btnSub:

          items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),InputTypes.NUM));

          checkAndCompute();

          items.add(new Item(0, InputTypes.SUB));

          tvScreen.setText("");

          break;

9)實現(xiàn)等于號等運算

case R.id.btnResult:

          items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),InputTypes.NUM));

          checkAndCompute();

          tvScreen.setText(items.get(0).value+"");

          items.clear();

          break;


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI