Android 計算機製作 2.註冊View 構建函數

來源:互聯網
上載者:User

標籤:

鄙人新手 整了 快兩天 終於搞定了。。

1.首先是MainActivity 中 在Oncreate函數中 註冊

2.按+ 或者 - 號 來分成兩大字串 s1 和 s2 

  再將s2 分為更小的s1 和 s2 直到 s2不包含+ 或者 -號 

思路就是這樣,沒用遞迴,遞迴速度太慢,也不擅長用遞迴。

3.就是找各種Bug 還有裝飾

基本達成目標 和自己手機上安卓的內建計算機基本一樣。

項目代碼如下:

連結: 連結: http://pan.baidu.com/s/1sj65nop 密碼: 926r

看到還用百度雲 就知道我有多菜了。。。

寫法如下:

package com.example.administrator.myapplication;import android.app.Activity;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity implements OnClickListener {    private Button bt_0;    private Button bt_1;    private Button bt_2;    private Button bt_3;    private Button bt_4;    private Button bt_5;    private Button bt_6;    private Button bt_7;    private Button bt_8;    private Button bt_9;    private Button bt_point;    private Button bt_C;    private Button bt_DEL;    private Button bt_minuse;    private Button bt_multipy;    private Button bt_plus;    private Button bt_divide;    private Button bt_dengyu;    private EditText input_text;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);//        註冊Button        bt_0 = (Button) findViewById(R.id.bt_0);        bt_1 = (Button) findViewById(R.id.bt_1);        bt_2 = (Button) findViewById(R.id.bt_2);        bt_3 = (Button) findViewById(R.id.bt_3);        bt_4 = (Button) findViewById(R.id.bt_4);        bt_5 = (Button) findViewById(R.id.bt_5);        bt_6 = (Button) findViewById(R.id.bt_6);        bt_7 = (Button) findViewById(R.id.bt_7);        bt_8 = (Button) findViewById(R.id.bt_8);        bt_9 = (Button) findViewById(R.id.bt_9);        bt_point = (Button) findViewById(R.id.bt_point);        bt_C = (Button) findViewById(R.id.bt_clear);        bt_DEL = (Button) findViewById(R.id.bt_del);        bt_minuse = (Button) findViewById(R.id.bt_minuse);        bt_multipy = (Button) findViewById(R.id.bt_multipy);        bt_plus = (Button) findViewById(R.id.bt_plus);        bt_divide = (Button) findViewById(R.id.bt_divide);        bt_dengyu = (Button) findViewById(R.id.bt_dengyu);        input_text = (EditText) findViewById(R.id.edit_text1);//      監聽事件        bt_0.setOnClickListener(this);        bt_1.setOnClickListener(this);        bt_2.setOnClickListener(this);        bt_3.setOnClickListener(this);        bt_4.setOnClickListener(this);        bt_5.setOnClickListener(this);        bt_6.setOnClickListener(this);        bt_7.setOnClickListener(this);        bt_8.setOnClickListener(this);        bt_9.setOnClickListener(this);        bt_point.setOnClickListener(this);        bt_C.setOnClickListener(this);        bt_DEL.setOnClickListener(this);        bt_minuse.setOnClickListener(this);        bt_multipy.setOnClickListener(this);        bt_plus.setOnClickListener(this);        bt_divide.setOnClickListener(this);        bt_dengyu.setOnClickListener(this);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }    @Override    public void onClick(View v) {        String str = input_text.getText().toString();        switch (v.getId()) {            case R.id.bt_0:            case R.id.bt_1:            case R.id.bt_2:            case R.id.bt_3:            case R.id.bt_4:            case R.id.bt_5:            case R.id.bt_6:            case R.id.bt_7:            case R.id.bt_8:            case R.id.bt_9:                input_text.setText(str + ((Button) v).getText());                break;            case R.id.bt_point:                if (!str.contains(".")) input_text.setText(str + ((Button) v).getText());                break;            case R.id.bt_plus:            case R.id.bt_minuse:            case R.id.bt_multipy:            case R.id.bt_divide:                if(str.equals(""));                else {                    char a =str.charAt(str.length()-1);                    Log.i("str",str+"");                    Log.i("最後一位字元",a+"");                    if( a ==‘ ‘ );                    else {                        input_text.setText(str + " " + ((Button) v).getText() + " ");                    }                    a =str.charAt(str.length()-1);                    break;                }                break;            case R.id.bt_clear:                input_text.setText(null);                break;            case R.id.bt_del:                if (str != null && !str.equals("")) {                    input_text.setText(str.substring(0, str.length() - 1));                }                break;            case R.id.bt_dengyu:                getRseult();                break;        }    }    //運算結果    private void getRseult() {        String str = input_text.getText().toString();        if (str == null || str.equals(""))            return;        if(!str.contains("+") &&!str.contains("-")&&!str.contains("×")&&!str.contains("+") )            return;        //遍曆計算result        double result = 0;        char a =str.charAt(str.length()-2);        if(a == ‘+‘ || a == ‘-‘){            str = str + ‘0‘;        }        else if(a == ‘ב || a == ‘÷‘){            str = str + ‘1‘;        }        int i = 0;        int start = 0;        char temp =‘ ‘;        int flag = 1;        if(!str.contains("+") &&!str.contains("-")){            result += calculate_include_multy_or_minuse(str);        }        else {            for (; i < str.length(); i++) {                char c = str.charAt(i);                if (c == ‘+‘ || c == ‘-‘) {                    String s1 = str.substring(start, i);                    Log.i("S1是", s1 + "");                    if(flag == 0) result -= calculate_include_multy_or_minuse(s1);                    else result += calculate_include_multy_or_minuse(s1);                    start = i + 1;                    if(c == ‘-‘) flag = 0;                    else flag = 1;                    String s2 = str.substring(start, str.length());                    Log.i("S2是", s2 + "");                    if (s2.contains("+") || s2.contains("-")) {                        temp = c;                        continue;                    }                    else {                        if(flag == 0) {                            result -= calculate_include_multy_or_minuse(s2);                        }                        else result += calculate_include_multy_or_minuse(s2);                    }                }            }        }        int r = 0;//        String result_string = Double.toString(result);        if ((int)result == result){            r = (int)result;            input_text.setText(r + "");        }        else            input_text.setText(result + "");    }    private double calculate(String s) {        double sum = 1;        int start = 0;        int flag = 0;        int flag2 = 0;        s = s + ‘ב;        char op = ‘ ‘;        for (int i = 0; i < s.length(); i++) {            char c = s.charAt(i);            if (c == ‘ב || c == ‘÷‘) {                if (flag2 == 0) op = c;                String s1 = s.substring(start, i);                if (flag == 0) {                    sum *= Double.parseDouble(s1);//                    Log.i("第一個是"," "+sum);                    flag = 1;                    flag2 = 1;                } else {                    switch (op) {                        case ‘ב://                            Log.i("s1是"," "+s1);                            sum = sum * Double.parseDouble(s1);//                            Log.i("sum是"," "+sum);                            break;                        case ‘÷‘://                            Log.i("s2是"," "+s1);                            sum = sum / Double.parseDouble(s1);//                            Log.i("sum是"," "+sum);                            break;                    }                }                op = c;                start = i + 1;            }        }//        Log.i("sum的結果是", " " + sum);        return sum;    }    private double calculate_include_multy_or_minuse(String s) {                double sum = 0;                if (s.contains("×") || s.contains("÷")) {                    sum  = calculate(s);                } else {                    sum  = Double.parseDouble(s);                }        return sum;    }}

  

  

Android 計算機製作 2.註冊View 構建函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.