版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Goldxwang/article/details/78519367
Module Module5_输入简单表达式并求值
Sub Main()
REM 定义存放表达式的字符串变量
Dim Expression As String
REM 定义存放操作数的两个单精度变量
Dim opNumber1, opNumber2 As Single
REM 定义存放操作符的字符串数组
Dim opChars() As String = {"+", "-", "*", "/"}
Dim opChar, opString1, opString2, Result As String
Dim iCount, nPos As Integer
Console.WriteLine("请输入一个简单表达式,如:1.1+1.3")
REM 输入字符串表达式
Expression = Console.ReadLine()
REM 调用Trim方法去掉expression两端的空格
Expression = Expression.Trim()
REM 在字符串中查找空格,并删除
While Expression.IndexOf(" ") >= 0
Expression = Expression.Remove(Expression.IndexOf(" "), 1)
End While
REM 利用For循环查找表达式中操作符的种类及位置
For iCount = 0 To 3
opChar = opChars(iCount)
nPos = Expression.IndexOf(opChar)
REM 如果nPos大于等于零,表示找到了操作符,不需要再进行操作符的比较
If nPos >= 0 Then
Exit For REM 退出For循环
End If
Next
REM 如果npos小于0,表示没有在表达式中找到任何操作符
REM 提示用户输入错误后退出主过程
If nPos < 0 Then
Console.WriteLine("发生错误,没有输入操作符")
Console.ReadLine()
REM 退出主过程,即退出了应用程序
Exit Sub
End If
REM 如果找到操作符,以操作符的位置为标志分别获取该位置前后的两个子串作为操作数
REM 从表达式的第一个字符开始取npos 个字符,为第一个数
opString1 = Expression.Substring(0, nPos)
REM 从表达式中运算符的位置开始取字符,直到表达式末尾,为第二个数
opString2 = Expression.Substring(nPos + 1, Expression.Length - nPos - 1)
REM 将两个操作数转换成单精度类型
opNumber1 = Convert.ToSingle(opString1)
opNumber2 = Convert.ToSingle(opString2)
Console.WriteLine("输入的操作数是" & opString1 & "和" & opString2)
Console.WriteLine(" ,操作符是" & opChar)
REM 根据操作符的类型对操作数进行不同的运算
Select Case opChar
Case "+"
Result = Convert.ToString(opNumber1 + opNumber2)
Case "-"
Result = Convert.ToString(opNumber1 - opNumber2)
Case "*"
Result = Convert.ToString(opNumber1 * opNumber2)
Case "/"
If opNumber2 = 0 Then
Result = "除数为零,不能计算"
Else
Result = Convert.ToString(opNumber1 / opNumber2)
End If
End Select
Console.Write(Expression & "=" & Result)
Console.ReadLine()
End Sub
End Module