I have a switch in which one case asks the user for several inputs to use for constructing a class object. One of these inputs should be in the form of a number. If a number is not entered it breaks the switch and ends up terminating the program. I want to set up a while(){} condition so that if a non integer is entered it will prompt the user to enter an integer and then continue on with the program.

```
int main(){
  int in_yob, ranking;
  string in_first_name, in_last_name, in_genre, in_fact, last_name, in_composer;
  char selection, choice;
    do {
      DisplayMenu();
      cin >> selection;
      cout << endl;
      while (!cin || selection < 48 || selection > 53){
        cin.clear();
        cout << "Please make a valid selection" << endl;
        DisplayMenu();
        cin >> selection;
      }
      switch (selection) {
        case 49 : {
            cout << "First Name: ";
            cin >> in_first_name;
            cout << "Last Name: ";
            cin >> in_last_name;
            cout << "Genre: ";
            cin >> in_genre;
            cout << "Year of Birth: ";
            cin >> in_yob;
            cout << "Fact: ";
            cin >> in_fact;
            last_name = in_last_name;
            transform(last_name.begin(), last_name.end(), last_name.begin(), ::tolower);
            Composer& last_name = myDB.AddComposer(in_first_name, in_last_name,
                                                        in_genre, in_yob, in_fact);
            cin.clear();
        }   break;
...
        default: 
            cout << "Please make a valid selection" << endl;
      }
  } while (selection != 48);
}

```

I have tried inserting a while loop after `cin >> in_yob;` as:

```
while(!cin || in_yob > 1){
    cin.clear();
    cout << "Enter a positive enter for year of birth: ";
    cin >> in_yob;
}

```

but the result is an infinite loop of "Enter a positive enter for year of birth: ". I know this construct for error checking works outside of a switch case so what is the reason that within a switch case i'm getting this result? Also how would you go about fixing this so that I can check for and prevent an input error? Thanks.