切换总是在猜数字游戏时输出默认值

时间:2012-10-22 22:23:26

标签: c++

我正在尝试使用一个程序来猜测用户正在考虑的数字,但是它目前每次只输出默认的切换操作。请告诉我我做错了什么?谢谢!

srand(time(0));
int lowernum = 1;
int highernum = 1000;
int number=rand()%highernum + lowernum;
string letter = "";
int letternum = 0;

cout<<"\nOkay, think of a number between one and 1000 
and I will try to guess it!\n";
cout<<"\nIs your number higher (h), lower (l) 
or exactly (e): " << number << "\n";
cin>>letter;

if (letter == "h")
{
    letternum = 1;
}
else if (letter == "l")
{
    letternum = 2;
}
else if (letter == "e")
{
    letternum = 3;
}

switch(letternum){
case'1': highernum = number; cout<<"\nIs your number higher (h), 
lower (l) or exactly (e): " << number << "\n"; cin>>letter;
    break;
case'2': lowernum = number; cout<<"\nIs your number higher (h), 
lower (l) or exactly (e): " << number << "\n"; cin>>letter;
    break;
case'3': cout<<"\nWahoooooo! I win! :D\n";
    break;
default:cout<<"\nI don't understand what you just typed in.\n";
    break;

}

2 个答案:

答案 0 :(得分:3)

letternum是一个整数,您的switch语句使用字符(例如&#39; 1&#39;),只需从案例表达式中的字符中删除引号:

switch(letternum){
case 1: 

等...

答案 1 :(得分:1)

因为你的开关标签是字符,但你的letternum是一个int,所以它们不匹配。