我想知道是否有任何简单的方法可以直接“跳”到特定案例。
我知道可以通过使用do while循环来完成。想知道是否有更优雅的方式。
例如(当然不是整个代码):
.
.
.
case 8:
{
if (grades.findStudent(tempid1)==-1)
{
cout << "\nOne of the ID's you have entered wasn't found. Try again.\n" << endl;
case(8); //<- <- <- something like that
}
}
break;
.
.
.
答案 0 :(得分:2)
不确定。做:
switch (...) {
case 1:
foo ();
goto bar;
case 2:
...
bar:
case 42:
baz ();
break;
}
但是可能存在其他解决方案。
答案 1 :(得分:1)
嗯...
我认为重构这个的第一个最佳方法是在case 8:
函数中创建任何内容,并在case 8:
内调用该函数以及您想要使用的其他地方它
答案 2 :(得分:0)
这里有错误的控制结构。你想要这样的东西:
int studentId;
while(true) {
studentId = getStudentId(); // Sorry, I'm rusty.
if (isValid(studentId)) { break;}
}
switch (...) {
...
}
一次做一件事。你不是 Duff设备的Duff 。看那一个。这太吓人了!
答案 3 :(得分:0)
也许这会更好
case 8:
while (grades.findStudent(tempid1)==-1)
{
cout << "\nOne of the ID's you have entered wasn't found. Try again.\n" << endl;
// Do whatever to enter tempid1 (perhaps a function here that is used
// before the start of this switch statement?
}
答案 4 :(得分:0)
我不知道,但我怀疑这是某种“菜单系统”,而8是“搜索学生”。
您希望在哪种情况下执行:
while (grades.findStudent(tempid1)==-1)
{
cout << "\none of the ID's you have entered wasn't found. Try again.\n" << endl;
// add code to ask for tempid1 again
}
因此,不使用“if”,而是使用“while”。