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