`
cuitongxin
  • 浏览: 26529 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA计算器

 
阅读更多

问题描述:

 * 1、给出一个算数表达式,计算该表达式的结果.

 * 2、表达式格式为:数字字符 ‘0’....到'9',运算符'+','*' 组成。

 * 3、要求,不要调用任何的api来实现 ,使用简单的加减乘除操作来完成。

/**
 *问题描述:
 * 1、给出一个算数表达式,计算该表达式的结果.
 * 2、表达式格式为:数字字符 ‘0’....到'9',运算符'+','*' 组成。
 * 3、要求,不要调用任何的api来实现 ,使用简单的加减乘除操作来完成。
 *
 * 解题思路:
 * 1、扫描表达式,对于加法操作可以直接相加,对于乘法操作,先计算乘法表达式的值,然后再相加到结果集中去。
 */

/**
 * User: wb-cuitongxin
 * Date: 13-6-13
 */
public class CaculateChar {

    public static void main(String[] args) {

        //需要计算结果的表达式
        String expression = "2*3*2+1+2+3*2*2*2";

        //调用方法并且计算结果
        int result = caculateExpression(expression);

        System.out.println(result);
    }

    private static int caculateExpression(String expression) {
        char[] ca = expression.toCharArray();
        int length = ca.length;  //表达式的总体长度
        int sum = 0; //存放加法的结果集
        int multiplication = 1; //存放乘法的结果集
        int i = 1;  //循环字符串的开始下标
        //循环字符串求结果
        while (i<length) {
            //如果当前字符是 乘法符号 '*'
            if(ca[i] == '*') {
                multiplication = ca[i-1] - 48; //把乘号前面的值赋值给--乘法基数变量
                multiplication = multiplication * (ca[i+1] - 48); // 乘号两边的数字相乘
                //判断是否存在连乘的情况
                int j = i+2; //取当前乘号的下一个符号
                while (j<length && ca[j] == '*') {    //如果当前符号的下一个符号是'*' 表示是连乘
                    multiplication = multiplication * (ca[j+1]-48);   //计算连乘的结果
                    j = j+2;                                              //移动连乘的下标
                }
                sum = sum + multiplication; //把乘法的结果加到总的结果中
                i = j;
                continue;
            }
            //如果当前符号是'+'号
            if (ca[i] == '+') {
                //如果表达式的第一个符号元素是'+',则直接把该符号前面的元素放入结果集中去
                if (i==1) {
                    sum = sum + (ca[i-1] - 48);
                    i = i + 2;
                    continue;
                }
                if (ca[i-2] == '+') {
                    sum = sum + (ca[i-1] - 48);
                    i = i + 2;
                    if (i == length) {
                        sum = sum + (ca[i-1] - 48);
                        break;
                    }
                    continue;
                }
                //如果倒数第二个符号是'+'号,则直接把数字加入到结果集中即可
                if (i == ca.length - 2) {
                    sum = sum + (ca[i+1] - 48);
                    i = i + 2;
                    break;
                }
                int j = i+2;
                while (j<length && ca[j] == '+') {
                    sum = sum + (ca[j-1] - 48);
                    j = j + 2;
                }
                i = j;
                continue;
            }
        }
        return sum;
    }

}

 目前这是第一个版本,之后会实现第二个版本

 

分享到:
评论

相关推荐

    java计算器java计算器

    java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器java计算器

    java计算器代码(gui界面)

    java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用java计算器代码,初学者专用

    JAVA计算器计算器JAVA计算器计算器

    JAVA计算器计算器有点小问题JAVA计算器计算器

    JAVA计算器 报告和程序

    JAVA 计算器 实验报告书,内附完整代码,可用。

    java 计算器(已实现)

    java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器java 计算器

    Java计算器课程设计报告---模拟科学计算器[16页].doc.docx

    Java计算器课程设计报告---模拟科学计算器[16页].doc.docxJava计算器课程设计报告---模拟科学计算器[16页].doc.docxJava计算器课程设计报告---模拟科学计算器[16页].doc.docxJava计算器课程设计报告---模拟科学...

    java计算器代码下载

    java计算器代码java计算器代码java计算器代码java计算器代码java计算器代码java计算器代码java计算器代码java计算器代码java计算器代码

    java计算器,带历史记录功能

    自己做的java计算器,带有历史记录功能,欢迎大家讨论

    用AWT包实现的JAVA计算器

    用AWT把实现的JAVA计算器

    java 计算器 源代码

    java 计算器 源代码 java 计算器 源代码 java 计算器 源代码

    java计算器+报告

    java计算器+报告 代码完美运行 报告更加给力

    java计算器.rar

    java计算器

    java计算器有架构的

    java计算器,有架构的。。。java计算器,有架构的。。。java计算器,有架构的。。。java计算器,有架构的。。。java计算器,有架构的。。。java计算器,有架构的。。。java计算器,有架构的。。。java计算器,有架构...

    Java计算器课程设计源码 附文档.rar

    Java计算器小程序 附文档,一个课程设计作品,实现图形界面的计算器,界面部分主要采用了NetBeans中的控件及按钮,计算器基本功能有:加、减、乘、除基本算术运算,附有详细的设计文档和说明。在设计过程中还参考了...

    java计算器实验报告

    按照实验要求,用java编辑简单计算器界面,并可以连续计算+、-、*、/等简单的数据运算

    java计算器.zip

    java计算器 加减乘除 .该程序实现带有优先级的数学运算,支持的运算包括加、减、乘、除、乘方、开方运算,并支持括号操作三、功能介绍: 符合基本计算器的优先级运算,支持加、减、乘、除、乘方、开方运算。 GUI图形...

    Java计算器源代码.pdf

    Java计算器源代码

    Java计算器Java计算器

    Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器Java计算器

    JAVA计算器 键盘输入

    我学习JAVA时编的计算器小程序,完全支持键盘输入! 仅供学习交流用!

Global site tag (gtag.js) - Google Analytics