您好,登錄后才能下訂單哦!
項目實戰(zhàn):實現(xiàn)一個簡單計算器
界面設(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;
免責(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)容。