欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android简易计算器(二)——关键逻辑讲解

程序员文章站 2024-02-27 13:45:27
...

  最近在学安卓的相关知识,第一个demo做了一个简易计算器,功能仿手机上自带的计算器,没有加括号,简单的四则运算,支持长表达式运算。这次讲解每个按键中需要处理的逻辑。


Android简易计算器(二)——关键逻辑讲解

数字键(btn_0~btn_9)


//按下数字函数
private void num_down(String num) {
    String strEdit = txt_edit.getText().toString();
    isOperateDown = false;

    if (strEdit.equals("0") || Pattern.matches("^=[0-9].*", strEdit)) {
        txt_edit.setText(num);
        txt_result.setText("");
    } else {
        txt_edit.setText(strEdit + num);
    }
}
  1. 运算符不能连续输入,所以输入一个数字后,设置运算符可以输入(isOperateDown = false;);
  2. txt_edit 中为 0 或者 =8、=422此类,按下数字后,直接将 txt_edit 中替换为数字,并清空 txt_result 的内容;
  3. 除情况2,都是直接在 txt_edit 后加上数字。


运算符(btn_plus、btn_sub、btn_multi、btn_divide)


// 按下运算符函数
private void operator_down(String operator) {
    if(!isOperateDown) {
        String strEdit = txt_edit.getText().toString();
        isOperateDown = true;
        isDotDown = false;
        if(Pattern.matches("^=[0-9].*", strEdit))
            strEdit = strEdit.substring(1, strEdit.length());
        txt_edit.setText(strEdit + operator);
    }
}
  1. 以两个运算符之间为一个数字,一个数字至多只能有一个小数点(.),故按下运算符后,设置小数点可以输入(isDotDown = false;);
  2. 在下一个数字输入之前,运算符不可重复输入,设置运算符不可输入(isOperateDown = true;);
  3. 若 txt_edit 为 =8、=400这类 = 开头的字符串,应除去开头的 =;
  4. 在 txt_edit 后加入运算符。

清空键(btn_clear)


case R.id.btn_clear:
    isDotDown = false;
    isOperateDown = false;
    txt_edit.setText("0");
    txt_result.setText("");
    break;

1, 清空键,即初始化所有东西(包括 isDotDown、isOperateDown、字符串)。


退格键(btn_back)


case R.id.btn_back: {
    String strEdit = txt_edit.getText().toString();
    int length = strEdit.length();
    if (Pattern.matches("^=[0-9].*", strEdit)) {
        txt_edit.setText("0");
        txt_result.setText("");
    } else {
        if (length > 0) {
            String word = strEdit.substring(length - 1, length);
            if(word.equals("."))
                isDotDown = false;
            if(word.equals("+") || word.equals("-") || word.equals("×") || word.equals("÷"))
                isOperateDown = false;
            txt_edit.setText(strEdit.substring(0, length - 1));
        }
    }
    break;
}
  1. 若 txt_edit 为 =8、=400这类 = 开头的字符串,按下退格键,应初始化 txt_edit和 txt_result;
  2. txt_edit 长度大于0,才可执行退格键;
  3. 一般情况下,删除 txt_edit 最后一个字符;
  4. 如果最后一个字符是运算符或小数点,就要设置相应变量(isOperateDownisDotDown)为可再次键入。



  以上为这个简易计算器,几类按钮需要注意的逻辑和对应代码,而等于键(btn_equal)是计算器的核心功能,我会在下一篇进行介绍。

相关标签: Android 计算器