计算器安卓小程序&移动终端软件开发课程

就做了这么个沙雕计算器em…还是总结一下把。
计算器安卓小程序&移动终端软件开发课程_第1张图片

1.页面布局
做的时候刚开始讲View,没办法就用的线性布局,太蠢了。总体模式选择的是android:orientation=“vertical” 将其分为6部分。除第一部分外,其余部分又划分成线性布局,模式是android:orientation=“horizontal”
然后就按需要添加Button就可以,尽量做到见明知意。



    
    

        

2.JAVA文件
一定要写在前面的是:写完这个程序后就一直报错,都要气死了。在大佬的指点下,发现我真是太SB了,把 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
这两个如此重要的语句放到onCreate最后了,所以一开始声明初始化变量findViewById根本find不到啊!太蠢了~

  • 在源代码中设置了OnClick方法,作为Button的监听方法,注意要在类中 implements View.OnClickListener。
  • 部件声明&设置监听:
       Button buttonce = findViewById(R.id.buttonce);
       Button buttonc = findViewById(R.id.buttonc);
       Button button7 = findViewById(R.id.button7);
       Button button8 = findViewById(R.id.button8);
       Button button9 = findViewById(R.id.button9);
       Button buttondiv = findViewById(R.id.buttondiv);
       Button button4 = findViewById(R.id.button4);
       Button button5 = findViewById(R.id.button5);
       Button button6 = findViewById(R.id.button6);
       Button buttontimes = findViewById(R.id.buttontimes);
       Button button1 = findViewById(R.id.button1);
       Button button2 = findViewById(R.id.button2);
       Button button3 = findViewById(R.id.button3);
       Button buttonminus = findViewById(R.id.buttonminus);
       Button button0 = findViewById(R.id.button0);
       Button buttonpoint = findViewById(R.id.buttonpoint);
       Button buttonequal = findViewById(R.id.buttonequal);
       Button buttonplus = findViewById(R.id.buttonplus);
        textView = findViewById(R.id.textView);
        buttonce.setOnClickListener(this);
        buttonc.setOnClickListener(this);
        button7.setOnClickListener(this);
        button8.setOnClickListener(this);
        button9.setOnClickListener(this);
        buttondiv.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
        button6.setOnClickListener(this);
        buttontimes.setOnClickListener(this);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        buttonminus.setOnClickListener(this);
        button0.setOnClickListener(this);
        buttonpoint.setOnClickListener(this);
        buttonequal.setOnClickListener(this);
        buttonplus.setOnClickListener(this);
  • 监听方法:
    1.首先将Textview中的内容获得,并转换为字符串类型。String str = textView.getText().toString();
    2.判断按钮事件。
 switch (v.getId()) {
            case R.id.button0:
            case R.id.button1:
            case R.id.button2:
            case R.id.button3:
            case R.id.button4:
            case R.id.button5:
            case R.id.button6:
            case R.id.button7:
            case R.id.button8:
            case R.id.button9:
            case R.id.buttonpoint:
                if (flag) {
                    flag = false;
                    str = "";
                    textView.setText("");

                }
                textView.setText(str + ((Button) v).getText());
                break;
            case R.id.buttonplus:
            case R.id.buttonminus:
            case R.id.buttontimes:
            case R.id.buttondiv:
                if (flag) {
                    flag = false;
                    str = "";
                    textView.setText("");
                }
                if (str.contains("+") || str.contains("-") || str.contains("*") || str.contains("/")) {
                    str = str.substring(0, str.indexOf(" "));
                }
                textView.setText(str + " " + ((Button) v).getText() + " ");
                break;
            case R.id.buttonc:
                if (flag) {
                    flag = false;
                    str = "";
                    textView.setText("");
                } else if (str != null && !str.equals("")) {
                    textView.setText(str.substring(0, str.length() - 1));
                }
                break;
            case R.id.buttonce:
                if (flag)
                    flag = false;
                str = "";
                textView.setText("");
                break;
            case R.id.buttonequal:
                getResult();
                break;
        }
    }

3.getResult()方法

private void getResult () {
            String exp = textView.getText().toString();
            if (exp == null || exp.equals(""))return;
            if (!exp.contains(" ")) {
                return;
            }
            if (flag) {
                flag = false;
                return;
            }
            flag = true;
            String s1 = exp.substring(0, exp.indexOf(" "));
            String op = exp.substring(exp.indexOf(" ") + 1, exp.indexOf(" ") + 2);
            String s2 = exp.substring(exp.indexOf(" ") + 3);
            double cnt = 0;
            if (!s1.equals("") &&!s2.equals("")) {
                double d1 = Double.parseDouble(s1);
                double d2 = Double.parseDouble(s2);
                if (op.equals("+")) {
                    cnt = d1 + d2;
                }
                if (op.equals("-")) {
                    cnt = d1 - d2;
                }
                if (op.equals("*")) {
                    cnt = d1 * d2;
                }
                if (op.equals("/")) {
                    if (d2 == 0) cnt = 0;
                    else cnt = d1 / d2;
                }
                if (!s1.contains(".") && !s2.equals(".") &&!op.equals("/")) {
                    int res = (int) cnt;
                    textView.setText(res + "");
                }
                else {
                    textView.setText(cnt + "");
                }
            } else if (!s1.equals("") && s2.equals("")) {//s1不空,s2空
                double d1 = Double.parseDouble(s1);
                if (op.equals("+")) {
                    cnt = d1;
                }
                if (op.equals("-")) {
                    cnt = d1;
                }
                if (op.equals("*")) {
                    cnt = 0;
                }
                if (op.equals("/")) {
                    cnt = 0;
                }
                if (!s1.contains(".")) {
                    int res = (int) cnt;
                    textView.setText(res + "");
                } else {
                    textView.setText(cnt + "");
                }
            } else if (s1.equals("") && !s2.equals("")) {//s2不空,s1空
                double d2 = Double.parseDouble(s2);
                if (op.equals("+")) {
                    cnt = d2;
                }
                if (op.equals("-")) {
                    cnt = 0 - d2;
                }
                if (op.equals("*")) {
                    cnt = 0;
                }
                if (op.equals("/")) {
                    cnt = 0;
                }
                if (!s2.contains(".")) {
                    int res = (int) cnt;
                    textView.setText(res + "");
                } else {
                    textView.setText(cnt + "");
                }
            } else {
                textView.setText("");
            }
        }

你可能感兴趣的:(移动终端软件开发课程,计算器安卓)