我不知道在这种情况下还有什么用,但if语句.
我想要做的是string direction;从Windows表单中获取值并检查它是否具有我正在寻找的值.然后检查turtleDir哪个是指示方向的字符串值turtleDir.
这个问题是在这里else if语句,当turtleDir是lookingleft它所有的else if语句.我想要它做的是在它完成其他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";
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以switch在字符串上使用语句:
switch (turtleDir) {
case "left":
angle = -1.6f;
turtleDir = "lookingLeft";
Program.form.direction = "";
break;
case "lookingLeft":
angle = 3.15f;
turtleDir = "lookingDown";
break;
// other cases
}
Run Code Online (Sandbox Code Playgroud)
这样,switch在完成指示后总是退出块.您还可以通过case default:在末尾添加a来指定当字符串与这些值都不匹配时要执行的操作.请记住,这些案例中的每一个都需要通过break声明终止(或者return/ 或者throw我不认为在这种情况下您需要这些声明).
如果仍然执行每个案例,那么您的问题就在于其他地方.如果一个方法包含这个代码并且从例如开始turtleDir == "left"调用,则该方法的每个连续调用将turtleDir循环直到每个情况都已执行并且turtleDir以最终值结束"lookingUp".因此,请查看您的控制流程,并可能跟踪您是否已执行此检查.也许跟踪经过的时间并且turtleDir只有在一段时间内处于特定状态时才会改变(我不知道你的要求).
编辑:你应该Program.form.direction = ""在每个case声明中设置.这就是你的代码一次又一次地被执行的原因.此外,如果没有输入方向,也要清除它.