VB.NET编程技巧与实例集粹 Module5_输入简单表达式并求值

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/Goldxwang/article/details/78519367
今日推荐