如果转到开关中的默认值,我必须使Programm从头开始

我不知道该怎么办

switch(eingabe)
{
    case 'g':
    case 'G':
        cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
        cin >> gzahl1;
        cout << "geben sie bitte die zweite zahl ein" << endl;
        cin >> gzahl2;
        cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
        break;
    case 'f':
    case 'F':
        cout << "Geben sie bitte die erste zahl ein" << endl;
        cin >> fzahl1;
        cout << "geben sie bitte die zweite zahl ein" << endl;
        cin >> fzahl2;
        cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
        break;
    default: cout << "ungueltige eingabe";
}

如果碰巧达到了开关中的默认值,我需要从头开始重新编程。

最佳答案

如lubgr的评论所述,您可以将整个块包装在while循环中。因此,对于您的情况,这可能会起作用:

//start of program {
bool correct_input = false;
while(!correct_input)
{
    //code before the switch
    switch(eingabe)
    {
        case 'g':
        case 'G':
            cout << "Geben sie bitte die erste zahl ein BITTE GANZZAHLEN" << endl;
            cin >> gzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> gzahl2;
            cout << "das ergebnis lautet: " << gzahl1 / gzahl2 << endl;
            //set correct_input to true
            correct_input = true;
        break;
        case 'f':
        case 'F':
            cout << "Geben sie bitte die erste zahl ein" << endl;
            cin >> fzahl1;
            cout << "geben sie bitte die zweite zahl ein" << endl;
            cin >> fzahl2;
            cout << "das ergebnis lautet: " << fzahl1 / fzahl2 << endl;
            //set correct_input to true
            correct_input = true;
        break;
        default:
            cout << "ungueltige eingabe";
            //next line is optional
            correct_input = false;
        break;
    }
}
//continue if correct input is inserted
//end of program }

是的,您可以在goto中使用 default switch 使您的生活“更轻松”,但是如链接中所述,强烈不鼓励这样做,因为这将导致spaghetti code。是的,请使用while,也可以使用do while

关于c++ - 使程序从头开始的循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56699953/

10-10 00:42