005.計算機

  • 布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="${relativePackage}.${activityClass}" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center_vertical|right" >

        <TextView
            android:id="@+id/txtDisplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:textColor="#ff0000"
            android:textSize="46dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <Button
            android:id="@+id/btnClear"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:onClick="doClear"
            android:text="C" />

        <Button
            android:id="@+id/btnBack"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doBack"
            android:text="B" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <Button
            android:id="@+id/btnN7"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum7"
            android:text="7" />

        <Button
            android:id="@+id/btnN8"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum8"
            android:text="8" />

        <Button
            android:id="@+id/btnN9"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum9"
            android:text="9" />

        <Button
            android:id="@+id/btnDiv"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doDiv"
            android:text="/" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <Button
            android:id="@+id/btnN4"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum4"
            android:text="4" />

        <Button
            android:id="@+id/btnN5"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum5"
            android:text="5" />

        <Button
            android:id="@+id/btnN6"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum6"
            android:text="6" />

        <Button
            android:id="@+id/btnMul"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doMul"
            android:text="*" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <Button
            android:id="@+id/btnN1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum1"
            android:text="1" />

        <Button
            android:id="@+id/btnN2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum2"
            android:text="2" />

        <Button
            android:id="@+id/btnN3"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum3"
            android:text="3" />

        <Button
            android:id="@+id/btnSub"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doSub"
            android:text="-" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >

        <Button
            android:id="@+id/btnDot"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNumd"
            android:text="." />

        <Button
            android:id="@+id/btnN0"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doNum0"
            android:text="0" />

        <Button
            android:id="@+id/btnEqu"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doEqu"
            android:text="=" />

        <Button
            android:id="@+id/btnAdd"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:onClick="doAdd"
            android:text="+" />
    </LinearLayout>

</LinearLayout>
  • MainActivity.java
package com.example.app5;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView txtDisplay;
    Double num;// 存放第一個數字
    char op;// 存放加減乘除
    boolean hasNum=false;// 判斷有無數字

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtDisplay = (TextView) this.findViewById(R.id.txtDisplay);
        txtDisplay.setText("");
    }

    public void doClear(View view) {
        txtDisplay.setText("");        
    }

    public void doBack(View view) {
        String text = txtDisplay.getText().toString();
        if (text.length() > 0) {
            txtDisplay.setText(text.substring(0, text.length() - 1));
        }
    }

    public void doNum7(View view) {
        txtDisplay.append("7");
    }

    public void doNum8(View view) {
        txtDisplay.append("8");
    }

    public void doNum9(View view) {
        txtDisplay.append("9");
    }

    public void doNum4(View view) {
        txtDisplay.append("4");
    }

    public void doNum5(View view) {
        txtDisplay.append("5");
    }

    public void doNum6(View view) {
        txtDisplay.append("6");
    }

    public void doNum1(View view) {
        txtDisplay.append("1");
    }

    public void doNum2(View view) {
        txtDisplay.append("2");
    }

    public void doNum3(View view) {
        txtDisplay.append("3");
    }

    public void doNum0(View view) {
        txtDisplay.append("0");
    }

    public void doNumd(View view) {
        txtDisplay.append(".");
    }

    public void doAdd(View view) {

        if (hasNum) {
            switch (op) {
            case '+':
                num += Double.parseDouble(txtDisplay.getText().toString());
                break;
            case '-':
                num -= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '*':
                num *= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '/':
                num /= Double.parseDouble(txtDisplay.getText().toString());
                break;

            }
        } else {
            num = Double.parseDouble(txtDisplay.getText().toString());
        }
        op = '+';
        txtDisplay.setText("");
        hasNum = true;
    }

    public void doSub(View view) {

        if (hasNum) {
            switch (op) {
            case '+':
                num += Double.parseDouble(txtDisplay.getText().toString());
                break;
            case '-':
                num -= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '*':
                num *= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '/':
                num /= Double.parseDouble(txtDisplay.getText().toString());
                break;

            }
        } else {
            num = Double.parseDouble(txtDisplay.getText().toString());
        }
        op = '-';
        txtDisplay.setText("");
        hasNum = true;
    }

    public void doMul(View view) {

        if (hasNum) {
            switch (op) {
            case '+':
                num += Double.parseDouble(txtDisplay.getText().toString());
                break;
            case '-':
                num -= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '*':
                num *= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '/':
                num /= Double.parseDouble(txtDisplay.getText().toString());
                break;

            }
        } else {
            num = Double.parseDouble(txtDisplay.getText().toString());
        }
        op = '*';
        txtDisplay.setText("");
        hasNum = true;
    }

    public void doDiv(View view) {

        if (hasNum) {
            switch (op) {
            case '+':
                num += Double.parseDouble(txtDisplay.getText().toString());
                break;
            case '-':
                num -= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '*':
                num *= Double.parseDouble(txtDisplay.getText().toString());
                break;

            case '/':
                num /= Double.parseDouble(txtDisplay.getText().toString());
                break;

            }
        } else {
            num = Double.parseDouble(txtDisplay.getText().toString());
        }
        op = '/';
        txtDisplay.setText("");
        hasNum = true;
    }

    public void doEqu(View view) {
        switch (op) {
        case '+':
            num += Double.parseDouble(txtDisplay.getText().toString());
            break;
        case '-':
            num -= Double.parseDouble(txtDisplay.getText().toString());
            break;

        case '*':
            num *= Double.parseDouble(txtDisplay.getText().toString());
            break;

        case '/':
            num /= Double.parseDouble(txtDisplay.getText().toString());
            break;

        }
        txtDisplay.setText(num + "");
        op='\0';
        hasNum=false;
    }
}