我正在尝试做的事似乎非常简单,但它并没有按照我想要的方式工作。我知道我缺少了什么东西。本质上,我正在尝试读取控制台输入,将其分配给一个变量。然后我想检查该变量是否为有效数字。如果不是,我想告诉用户它是无效的,并重新开始循环,直到我得到一个有效的数字,然后退出。这是我的代码,请帮助我理解我做错了什么吗?
const int AVERAGE_IQ = 100;
int userIQ;
bool done = false;
do
{
Console.Write("Please enter an IQ Score between 1 and 200: ");
userIQ = Convert.ToInt32(Console.ReadLine());
if (userIQ == 0 || userIQ >= 200)
{
Console.WriteLine("You have entered an invalid IQ Score, please try again.");
done = false;
}
else if (userIQ >= AVERAGE_IQ)
{
Console.WriteLine("{0} is an above average IQ.", userIQ);
done = true;
break;
}
else if (userIQ <= AVERAGE_IQ)
{
Console.WriteLine("{0} is an below average IQ.", userIQ);
done = true;
break;
}
else if (userIQ == AVERAGE_IQ)
{
Console.WriteLine("{0} is anaverage IQ.", userIQ);
done = true;
break;
}
} while (done =! true);
while (done =! true);
应该改成while (done != true);
„ÄÇ - Neil KnightConvert.ToInt32
的调用进行一些错误检查。可以使用类似于int.TryParse
的方法,如果失败则显示有用的错误消息并继续执行。 - Davidmybool == true
是多余的,只需要写while(!done)
就可以了。 - jb.