1.as解析字符串表达式,四则运算结果。
2.传入字符串表达式infix.如:“(2-8/4-7*2)/3“
3.返回计算后的结果,String类型。
private function evalString(infix:String):String{ var opArray:Array = new Array(); //栈底标记 opArray[0] = '@'; var op:Number = 1; var postfix:Array = new Array(); var post:Number = 0; //保存计算结果 var res:Number = 0; var i, j; var tempString:String = new String(); //计算两个数 function Caculate(opSign:String) { if (opSign == '+') { res = postfix[post-2]+postfix[post-1]; } else if (opSign == '-') { res = postfix[post-2]-postfix[post-1]; } else if (opSign == '*') { res = postfix[post-2]*postfix[post-1]; } else if (opSign == '/') { if (!postfix[post-1]) { trace("Expression Error!"); } else { res = postfix[post-2]/postfix[post-1]; } } postfix[post-1] = 0; postfix[post-2] = res; post--; } //扫描中缀表达式 for (i=0; i<infix.length; i++) { switch (infix.charAt(i)) { //左括号就直接入栈 case '(' : opArray[op] = infix.charAt(i); op++; break; //右括号则退栈计算,直到遇见一个左括号 case ')' : for (j=op-1; j>0; j--) { if (opArray[j] != '(') { Caculate(opArray[j]); opArray[j] = '#'; } else { opArray[j] = '#'; break; } } op = j; break; case '*' : case '/' : //如果栈顶的运算符为*或/,则先退栈,再入栈,否则直接入栈 if (opArray[op-1] == '*') { op--; Caculate(opArray[op]); opArray[op] = '#'; } else if (opArray[op-1] == '/') { op--; Caculate(opArray[op]); opArray[op] = '#'; } opArray[op] = infix.charAt(i); op++; break; case '+' : case '-' : //如果栈顶的运算符不是左括号也不是栈底,则先退栈计算,再入栈 if (opArray[op-1] != '(' && opArray[op-1] != '@') { op--; Caculate(opArray[op]); opArray[op] = '#'; } opArray[op] = infix.charAt(i); op++; break; default : //如果是数字字符或者小数点则转化为数字存入数组 //如果下一个字符是运算符则把当前数字存入数组 tempString += infix.charAt(i); var temp:String = new String(); temp = infix.charAt(i+1); if (temp != '.' && (temp>'9' || temp<'0')) { postfix[post] = parseFloat(tempString); post++; tempString = ""; } //trace(postfix); } } //扫描完成,全部退栈 for (j=op-1; j>0; j--) { if (opArray[j] != '@') { Caculate(opArray[j]); opArray[j] = '#'; } else { break; } } //返回结果 return postfix[0]; }
您还没有登录,请您登录后再发表评论
本问题中,我们关注的是如何实现一个算法来正确地计算给定的类似“1+2*(3+5)-7”这样的字符串表达式。 首先,我们需要理解表达式的结构。四则运算遵循特定的运算顺序规则,即先乘除后加减,以及先括号内的运算。...
8. **表达式解析**:将输入的字符串转换成表达式的过程称为表达式解析。VB6没有内置的表达式解析器,因此需要自定义算法或使用第三方库来实现。一种常见的方法是分步解析,逐字符检查并处理运算符和数字。 9. **...
- 逐个字符读取输入的表达式字符串,并进行处理。 - **表达式求值**: - 当遇到非操作符时,将其压入操作数栈。 - 当遇到操作符时,根据当前栈顶的操作符与新读取的操作符的优先级进行比较,决定是否需要先进行...
在C#中,我们可以使用字符串解析和递归下降解析等方法来实现这个计算器。首先,我们需要将输入的表达式转换为字符数组,便于遍历和处理。接下来,我们会遇到两个主要问题:识别运算符和处理括号内的运算。 1. **...
- **加号** `+`:同样可以用来拼接字符串,但需要注意的是,如果两边的表达式不是字符串,则会尝试转换为字符串再拼接。 **示例**: ```vb Dim str As String str = "Hello" & " World" str = "123" + "456" ``` *...
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...
这份月考试题主要涵盖了VB的基础知识,包括语法、逻辑表达式、字符串操作、变量与数据类型、算术运算、流程控制以及输出格式化等方面。让我们逐一解析这些题目涉及的知识点: 1. 题目1是一个逻辑表达式,考查对NOT,...
- `CONCAT(str1, str2, ...)`: 拼接多个字符串。 - **位置查找**: - `INSTR(str, substr)`: 查找子串`substr`在字符串`str`中的位置。 - **字符串填充**: - `RPAD(str, len, padstr)`: 在字符串`str`右侧填充`...
- **解析**:`Len`函数用于返回字符串的长度。"ABCDE"包含5个字符,因此`Len("ABCDE")`的返回值为5。 ### 11. Val("123.456") 的返回值 正确答案:**A.123.456** - **解析**:`Val`函数用于将文本转换为数字。`Val...
1. 表达式处理:对于简单的四则运算,我们可以通过维护两个操作数和当前运算符来实现。每次用户输入或选择运算符,我们就更新这些变量。当用户点击“=”时,使用这些信息进行计算。 2. 带括号的表达式:处理带括号...
通过以上解析,我们了解了 Python 语言的一些基本概念,包括保留字的数量、变量命名规则、字符串操作、赋值语句、`eval` 函数的使用、注释的写法、语言的特点、模块的引用方式以及如何处理浮点数运算中的精度问题。...
7. 字符串长度与数组大小:`strlen(s)`返回字符串`s`的长度,不包括结束的空字符,所以是7;而`sizeof(s)`返回整个数组的大小,包括结束的空字符,所以是8。 8. 指针操作:在给定的选项中,表达式`*(p+3)`的值为56...
- 使用`||`操作符可以连接两个或多个字符串表达式。 **示例8:** - **题目:**连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成OUT_PUT。 - **SQL语句:** ```sql SELECT ename || ',' || job ...
- `concat()`和`||`用于字符串连接,而`substr()`、`length()`和`replace()`则用于字符串截取、长度获取和替换操作,这些功能在数据清洗和格式调整中极为重要。 #### 2. 数值运算与格式化 - `round()`函数用于四舍...
【知识点详解】 1. 计算机程序控制结构:计算机程序...以上是根据题目内容解析的相关知识点,涵盖了计算机程序的基本结构、算法特征、VB编程语言的语法、变量命名、数据类型、流程控制、字符串处理、数组操作等方面。
展示了序列的创建,可以包含数值运算、其他序列以及字符串。 ##### 示例三:序列片段 ``` seq[1..2] ``` 假设有序列`seq = ["a", "b", "c", "d", "e"]`,则`seq[1..2]`将返回`["b", "c"]`。 #### 七、总结 通过...
8. **字符串函数**:包括字符串长度、反转、连接、截取、大小写转换、去空格、正则表达式处理、URL解析、JSON解析等。 9. **集合统计函数**:如计数、求和、平均值、最值、非空集合的统计功能等。 10. **复合类型...
- 使用 `AS` 关键字或直接跟在计算表达式后加别名(若别名含有空格则需用双引号括起来)来给列命名。 - 示例:`SELECT ename, sal * 12 "annual sal" FROM emp;` - **NULL处理**: - 示例:`SELECT ename, sal, ...
图形对象操作(如`axes`,`axis`),控制流(如`break`,`while`),颜色处理(如`colormap`,`colordef`),矩阵运算(如`chol`,`cond`),绘图(如`contour`,`contourf`),以及符号计算(如`chi2cdf`,`chi2inv...
还有其他函数,如 `CONCAT` 连接字符串,`SUBSTRING` 提取子串,`REPLACE` 替换字符串中的部分字符等。 5. **数值函数**: - 算术操作符如 `+`, `-`, `*`, `/`, `%` 用于基本的数学运算。此外,还有 `SQRT` 计算...
相关推荐
本问题中,我们关注的是如何实现一个算法来正确地计算给定的类似“1+2*(3+5)-7”这样的字符串表达式。 首先,我们需要理解表达式的结构。四则运算遵循特定的运算顺序规则,即先乘除后加减,以及先括号内的运算。...
8. **表达式解析**:将输入的字符串转换成表达式的过程称为表达式解析。VB6没有内置的表达式解析器,因此需要自定义算法或使用第三方库来实现。一种常见的方法是分步解析,逐字符检查并处理运算符和数字。 9. **...
- 逐个字符读取输入的表达式字符串,并进行处理。 - **表达式求值**: - 当遇到非操作符时,将其压入操作数栈。 - 当遇到操作符时,根据当前栈顶的操作符与新读取的操作符的优先级进行比较,决定是否需要先进行...
在C#中,我们可以使用字符串解析和递归下降解析等方法来实现这个计算器。首先,我们需要将输入的表达式转换为字符数组,便于遍历和处理。接下来,我们会遇到两个主要问题:识别运算符和处理括号内的运算。 1. **...
- **加号** `+`:同样可以用来拼接字符串,但需要注意的是,如果两边的表达式不是字符串,则会尝试转换为字符串再拼接。 **示例**: ```vb Dim str As String str = "Hello" & " World" str = "123" + "456" ``` *...
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...
这份月考试题主要涵盖了VB的基础知识,包括语法、逻辑表达式、字符串操作、变量与数据类型、算术运算、流程控制以及输出格式化等方面。让我们逐一解析这些题目涉及的知识点: 1. 题目1是一个逻辑表达式,考查对NOT,...
- `CONCAT(str1, str2, ...)`: 拼接多个字符串。 - **位置查找**: - `INSTR(str, substr)`: 查找子串`substr`在字符串`str`中的位置。 - **字符串填充**: - `RPAD(str, len, padstr)`: 在字符串`str`右侧填充`...
- **解析**:`Len`函数用于返回字符串的长度。"ABCDE"包含5个字符,因此`Len("ABCDE")`的返回值为5。 ### 11. Val("123.456") 的返回值 正确答案:**A.123.456** - **解析**:`Val`函数用于将文本转换为数字。`Val...
1. 表达式处理:对于简单的四则运算,我们可以通过维护两个操作数和当前运算符来实现。每次用户输入或选择运算符,我们就更新这些变量。当用户点击“=”时,使用这些信息进行计算。 2. 带括号的表达式:处理带括号...
通过以上解析,我们了解了 Python 语言的一些基本概念,包括保留字的数量、变量命名规则、字符串操作、赋值语句、`eval` 函数的使用、注释的写法、语言的特点、模块的引用方式以及如何处理浮点数运算中的精度问题。...
7. 字符串长度与数组大小:`strlen(s)`返回字符串`s`的长度,不包括结束的空字符,所以是7;而`sizeof(s)`返回整个数组的大小,包括结束的空字符,所以是8。 8. 指针操作:在给定的选项中,表达式`*(p+3)`的值为56...
- 使用`||`操作符可以连接两个或多个字符串表达式。 **示例8:** - **题目:**连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成OUT_PUT。 - **SQL语句:** ```sql SELECT ename || ',' || job ...
- `concat()`和`||`用于字符串连接,而`substr()`、`length()`和`replace()`则用于字符串截取、长度获取和替换操作,这些功能在数据清洗和格式调整中极为重要。 #### 2. 数值运算与格式化 - `round()`函数用于四舍...
【知识点详解】 1. 计算机程序控制结构:计算机程序...以上是根据题目内容解析的相关知识点,涵盖了计算机程序的基本结构、算法特征、VB编程语言的语法、变量命名、数据类型、流程控制、字符串处理、数组操作等方面。
展示了序列的创建,可以包含数值运算、其他序列以及字符串。 ##### 示例三:序列片段 ``` seq[1..2] ``` 假设有序列`seq = ["a", "b", "c", "d", "e"]`,则`seq[1..2]`将返回`["b", "c"]`。 #### 七、总结 通过...
8. **字符串函数**:包括字符串长度、反转、连接、截取、大小写转换、去空格、正则表达式处理、URL解析、JSON解析等。 9. **集合统计函数**:如计数、求和、平均值、最值、非空集合的统计功能等。 10. **复合类型...
- 使用 `AS` 关键字或直接跟在计算表达式后加别名(若别名含有空格则需用双引号括起来)来给列命名。 - 示例:`SELECT ename, sal * 12 "annual sal" FROM emp;` - **NULL处理**: - 示例:`SELECT ename, sal, ...
图形对象操作(如`axes`,`axis`),控制流(如`break`,`while`),颜色处理(如`colormap`,`colordef`),矩阵运算(如`chol`,`cond`),绘图(如`contour`,`contourf`),以及符号计算(如`chi2cdf`,`chi2inv...
还有其他函数,如 `CONCAT` 连接字符串,`SUBSTRING` 提取子串,`REPLACE` 替换字符串中的部分字符等。 5. **数值函数**: - 算术操作符如 `+`, `-`, `*`, `/`, `%` 用于基本的数学运算。此外,还有 `SQRT` 计算...