Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VB.NET中创建多if语句?_Vb.net - Fatal编程技术网

如何在VB.NET中创建多if语句?

如何在VB.NET中创建多if语句?,vb.net,Vb.net,因此,我试图通过将表达式推入堆栈来制作一个中缀来反转波兰符号程序。程序迭代表达式以查找运算符,一旦找到它,就会弹出2个值并执行计算。但是,如果我尝试添加多个if语句,则会弹出一个转换错误。行“if express(i)”+”用于加法,但是如果我要通过添加多个条件“if express(i)”+“或“-”或“*”来扩展它,那么它表示“从字符串转换为布尔类型”无效。有人能帮我吗?谢谢 模块1 Sub Main() Dim expres As String Console.WriteL

因此,我试图通过将表达式推入堆栈来制作一个中缀来反转波兰符号程序。程序迭代表达式以查找运算符,一旦找到它,就会弹出2个值并执行计算。但是,如果我尝试添加多个if语句,则会弹出一个转换错误。行“if express(i)”+”用于加法,但是如果我要通过添加多个条件“if express(i)”+“或“-”或“*”来扩展它,那么它表示“从字符串转换为布尔类型”无效。有人能帮我吗?谢谢

模块1

Sub Main()
    Dim expres As String
    Console.WriteLine("Enter infix expression")
    expres = Console.ReadLine()
    Dim S As New Stack
    Dim current(1) As Integer
    Dim temp_val As Integer
    For i = 0 To expres.Length - 1
        If expres(i) <> "+" Then
            S.Push(expres(i))
        End If

        If expres(i) = "+" Then
            current(0) = S.Pop().ToString
            current(1) = S.Pop().ToString
            temp_val = current(0) + current(1)
            Console.WriteLine(temp_val)
            S.Push(temp_val)

        End If
        If expres(i) = "-" Then
            current(0) = S.Pop().ToString
            current(1) = S.Pop().ToString
            temp_val = current(0) - current(1)
            Console.WriteLine(temp_val)
            S.Push(temp_val)

        End If
        If expres(i) = "*" Then
            current(0) = S.Pop().ToString
            current(1) = S.Pop().ToString
            temp_val = current(0) * current(1)
            Console.WriteLine(temp_val)
            S.Push(temp_val)

        End If
        If expres(i) = "/" Then
            current(0) = S.Pop().ToString
            current(1) = S.Pop().ToString
            temp_val = current(0) / current(1)
            Console.WriteLine(temp_val)
            S.Push(temp_val)

        End If
        If expres(i) = "^" Then
            current(0) = S.Pop().ToString
            current(1) = S.Pop().ToString
            temp_val = current(0) ^ current(1)
            Console.WriteLine(temp_val)
            S.Push(temp_val)

        End If
        If expres(i) = "~" Then
            current(0) = S.Pop().ToString
            current(1) = S.Pop().ToString
            temp_val = current(0) + current(1)
            Console.WriteLine(temp_val)
            S.Push(temp_val)

        End If
    Next
    Console.ReadLine()
End Sub
Sub-Main()
作为字符串的Dim expres
Console.WriteLine(“输入中缀表达式”)
expres=Console.ReadLine()
将S变暗为新堆栈
变暗电流(1)为整数
Dim temp_val为整数
对于i=0表示长度-1
如果表达式(i)“+”则
S.Push(expres(i))
如果结束
如果表达式(i)=“+”则
当前(0)=S.Pop().ToString
当前(1)=S.Pop().ToString
温度=电流(0)+电流(1)
控制台写入线(临时值)
S.Push(温度值)
如果结束
如果表达式(i)=“-”,则
当前(0)=S.Pop().ToString
当前(1)=S.Pop().ToString
温度=电流(0)-电流(1)
控制台写入线(临时值)
S.Push(温度值)
如果结束
如果表达式(i)=“*”则
当前(0)=S.Pop().ToString
当前(1)=S.Pop().ToString
温度=电流(0)*电流(1)
控制台写入线(临时值)
S.Push(温度值)
如果结束
如果表达式(i)=“/”则
当前(0)=S.Pop().ToString
当前(1)=S.Pop().ToString
温度=电流(0)/电流(1)
控制台写入线(临时值)
S.Push(温度值)
如果结束
如果表达式(i)=“^”,则
当前(0)=S.Pop().ToString
当前(1)=S.Pop().ToString
温度=当前值(0)^当前值(1)
控制台写入线(临时值)
S.Push(温度值)
如果结束
如果表达式(i)=“~”则
当前(0)=S.Pop().ToString
当前(1)=S.Pop().ToString
温度=电流(0)+电流(1)
控制台写入线(临时值)
S.Push(温度值)
如果结束
下一个
Console.ReadLine()
端接头

End Module

每次比较时,都应该声明左表达式,例如


if express(i)“+”或express(i)“-”或express(i)“*”

您能更详细地解释
if express(i)“+”或“-”或“*”
的预期逻辑吗?请改用Select语句。现在它就变成了Case Else子句。@freefiller“花括号”通常指的是大括号。我看不到大括号。你指的是智能引号(微软office称之为智能引号)?@玛丽,是的,打字太快,没有注意到我的错误……你完全正确……我指的是大括号