除了 if 语句之外,我不知道在这种情况下还能使用什么。
我想做的是从 Windows 表单中获取一个值字符串方向;
,并检查它是否具有我正在寻找的值。然后检查turtleDir
是否是一个字符串值,指示turtleDir
的方向。
问题出现在 else if 语句处,当 turtleDir
为 lookingleft
时,它会执行所有 else if 语句。我希望它做的是在完成 else if 语句之后它需要停止并等待下一个命令。不检查所有的陈述。
有人可以告诉我如何修复它以及我做错了什么吗?
这是代码:
else if ( Program.form.direction == "right" )
{
if ( turtleDir == "left" )
{
angle = -1.6f;
turtleDir = "lookingLeft";
Program.form.direction = "";
}
else if ( turtleDir == "lookingLeft" )
{
angle = 3.15f;
turtleDir = "lookingDown";
}
else if ( turtleDir == "lookingDown" )
{
angle = 1.6f;
turtleDir = "lookingRight";
}
else if ( turtleDir == "lookingRight" )
{
angle = 0.0f;
turtleDir = "lookingUp";
}
}
最佳答案
您也可以在字符串上使用 switch
语句:
switch (turtleDir) {
case "left":
angle = -1.6f;
turtleDir = "lookingLeft";
Program.form.direction = "";
break;
case "lookingLeft":
angle = 3.15f;
turtleDir = "lookingDown";
break;
// other cases
}
这样,switch
block 总是在指令完成后退出。您还可以通过在末尾添加 case default:
来指定当字符串与这些值都不匹配时要执行的操作。请记住,每种情况都需要通过 break
语句(或 return
/throw
终止,但我认为您不需要此中的那些案件)。
如果仍然执行每个案例,那么您的问题出在其他地方。如果一个方法包含此代码并且从例如开始调用turtleDir == "left"
,每次连续调用该方法都会让 turtleDir
循环,直到执行完每个 case 并且 turtleDir
最终得到最终值“lookingUp”
。因此,请查看您的控制流程,并跟踪您是否已执行此检查。也许跟踪耗时并仅在它处于特定状态一段时间后才更改 turtleDir
(我不知道您的要求)。
编辑:您应该在每个case
语句中设置Program.form.direction = ""
。这就是为什么你的代码会被一遍又一遍地执行。另外,如果没有输入方向,也将其清除。
关于c# - 结束 else if 语句 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845556/