查看: 2068|回复: 1

Java实现一个计算器

[复制链接]

10

主题

11

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2021-11-28 15:06:04 | 显示全部楼层 |阅读模式
使用Java编程来实现一个计算器 (来自风火轮技术团队)


  计算器可以实现简单到复杂的计算:
                                加减,乘除,开方,幂次运算


实现的计算器的界面:
11.PNG


(1)初始化计算器以及计算器的外观代码:

       113.png


(2)计算器界面的设计编写程序代码:

       114.png    

(3)如何实现小数点的计算代码:
                111.png


(4)实现计算结果的的代码代码:

       112.png

(5)计算符号实现的代码:
private void handleOperator(String key) {
    if (operator.equals("/")) {
        // 除法运算
        // 如果当前结果文本框中的值等于0
        if (getNumberFromText() == 0.0) {
            // 操作不合法
            operateValidFlag = false;
            resultText.setText("除数不能为零");
        } else {
            resultNum /= getNumberFromText();
        }
    } else if (operator.equals("1/x")) {
        // 倒数运算
        if (resultNum == 0.0) {
            // 操作不合法
            operateValidFlag = false;
            resultText.setText("零没有倒数");
        } else {
            resultNum = 1 / resultNum;
        }
    } else if (operator.equals("+")) {
        // 加法运算
        resultNum += getNumberFromText();
    } else if (operator.equals("-")) {
        // 减法运算
        resultNum -= getNumberFromText();
    } else if (operator.equals("*")) {
        // 乘法运算
        resultNum *= getNumberFromText();
    } else if (operator.equals("sqrt")) {
        // 平方根运算
        resultNum = Math.sqrt(resultNum);
    } else if (operator.equals("%")) {
        // 百分号运算,除以100
        resultNum = resultNum / 100;
    } else if (operator.equals("+/-")) {
        // 正数负数运算
        resultNum = resultNum * (-1);
    } else if (operator.equals("=")) {
        // 赋值运算
        resultNum = getNumberFromText();
    }
    if (operateValidFlag) {
        // 双精度浮点数的运算
        long t1;
        double t2;
        t1 = (long) resultNum;
        t2 = resultNum - t1;
        if (t2 == 0) {
            resultText.setText(String.valueOf(t1));
        } else {
            resultText.setText(String.valueOf(resultNum));
        }
    }
    // 运算符等于用户按的按钮
    operator = key;
    firstDigit = true;//这个地方太tm巧妙了想好几天, 先进行上一次操作,再将本次操作(最后一次操作)赋给操作,所以每次操作前都先进行上一次操作,默认操作为"=" nb
    operateValidFlag = true;
}
     
          补充:计算器实现的完整的代码可以点开百度网盘获取
                链接:https://pan.baidu.com/s/1GborD1HELZiaYFJye88mDw 提取码:79gw
                                                                                               资源提供者:风火轮技术团队






回复

使用道具 举报

3

主题

8

帖子

125

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
125
发表于 2021-12-17 18:13:56 | 显示全部楼层
妙啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|风火轮WIKI|手机版|深圳风火轮团队 ( 粤ICP备17095099号

GMT+8, 2022-5-20 11:17 , Processed in 0.059565 second(s), 26 queries .

快速回复 返回顶部 返回列表
 
【客服1】 商务合作 15289193
【客服2】 业务洽谈 13257599
【客服3】 售前咨询 510313198
【邮箱】
smartfire@smartfire.cn