Why does this create a infinite loop if I enter a char?



//////////////////////////////////////////////////////////////////////
//CREATE ITEM
//////////////////////////////////////////////////////////////////////
void World::CreateItem()
{
int answer = 0;
do
{
cout << endl << "Item Level: ";
cin >> answer;

}while(!GoodChoice(0, answer, 50));
FirstItem->GenerateItem(this, answer);
}

//////////////////////////////////////////////////////////////////////
//GOOD CHOICE
//////////////////////////////////////////////////////////////////////
int World::GoodChoice(int lowest, int Num, int highest)
{

if ((Num <= lowest) || (Num > highest))
{
//A bad choice so print a message and return false
cout << endl << "I don't understand that choice." << endl;
return 0;
}

//Since we haven't returned, the choice is good
return 1;
}