有没有办法直接进入具体案例?

时间:2013-04-12 18:41:08

标签: c++

我想知道是否有任何简单的方法可以直接“跳”到特定案例。

我知道可以通过使用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;
.
.
.

5 个答案:

答案 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”。