我一直在开发一个使用switch()函数的项目,如下所示:
switch (selectedMenu) {
case 1:
switch (selectedIndex) {
case 0:
invisibility = !invisibility;
break;
case 1:
invincibility = !invincibility;
break;
case 2:
superjump = !superjump;
break;
case 3:
//Option 4
break;
case 4:
//Option 5
break;
}
case 2:
switch (selectedIndex) {
case 0:
//Option 2
break;
case 1:
//Option 2
break;
case 2:
//Option 3
break;
case 3:
//Option 4
break;
case 4:
//Option 5
break;
}
case 3:
switch (selectedIndex) {
case 0:
//Option 2
break;
case 1:
//
break;
case 2:
//Option 3
break;
case 3:
//Option 4
break;
case 4:
//Option 5
break;
}
case 4:
switch (selectedIndex) {
case 0:
//Option 2
break;
case 1:
//Option 2
break;
case 2:
//Option 3
break;
case 3:
//Option 4
break;
case 4:
//Option 5
break;
}
case 5:
switch (selectedIndex) {
case 0:
//Option 2
break;
case 1:
SET_ENTITY_COORDS(pedID, -75.015, -818.215, 326.176);
break;
case 2:
//Option 3
break;
case 3:
//Option 4
break;
case 4:
//Option 5
break;
}
}我在代码中遇到了一个bug。
问题
在case 5 -> case 1中有一行:SET_ENTITY_COORDS(pedID, -75.015, -818.215, 326.176);,它应该将一个实体传送到某个位置。当我在上述任何一种情况下使用一个选项时,它也会传送这个实体,即使它不在这种情况下。
很难解释,所以让我们画一幅画:

我如何调整它,使它只启用我在情况下指定的函数,而不是它之上的所有功能?
(如何调整这一点,使其只允许超级跳转,而不是同时实现超级跳转和传送用户?)
发布于 2018-02-03 02:04:30
对于外部的break情况,需要使用switch语句:
switch (selectedMenu) {
case 1:
switch (selectedIndex) {
// blah, blah, blah...
}
break; // <-- this
case 2:
switch (selectedIndex) {
// blah, blah, blah...
}
break; // <-- this
case 3:
switch (selectedIndex) {
// blah, blah, blah...
}
break; // <-- this
case 4:
switch (selectedIndex) {
// blah, blah, blah...
}
break; // <-- this
case 5:
switch (selectedIndex) {
// blah, blah, blah...
}
break; // <-- this
}发布于 2018-02-03 02:16:06
Michael已经说过需要做些什么来解决您的问题,但是代码中发生的事情是,switch语句在C & C++中的自然设计是,如果您不使用条件词:break、continue或return,从case部分到下一个case语句。
简单的例子:
switch( idx ) {
case 1: {
// some code
}
case 2: {
// some code
continue;
}
case 3: {
// some code
break;
}
case 4: {
// some code
return statement;
}
}在上面的代码示例中,case 1不使用此开关语句所在的函数中的continue、break或return。因此,如果遇到case 1,它将在case 1的代码块内执行代码,然后检查case 2。Case 2将继续执行,case 3将突破开关语句,case 4将直接从函数中返回。这些开关-case语句的相同特性也适用于嵌套的开关语句。
https://stackoverflow.com/questions/48593216
复制相似问题