这是我的代码,每次执行程序时,它都会正常启动并崩溃。如何解决此问题以使其正常运行?
调试后,我得到以下信息:rnd无法获得局部变量或参数的值,因为该变量在该指令指针处不可用,可能是因为已对其进行了优化。 System.Random
playnumber无法获得局部变量或参数的值,因为它在此指令指针处不可用,可能是因为已对其进行了优化。诠释
play无法获得局部变量或参数的值,因为它在此指令指针处不可用,可能是因为已对其进行了优化。布尔
Random rnd = new Random();
int playnumber = rnd.Next();
bool play = true;
while (!play)
{
Console.Write("\n\Guess a number between 1 and 20: ");
int number = Convert.ToInt32(Console.ReadLine());
if (number < playnumber)
{
Console.WriteLine("\tThe given number " + number + " is to low, try again!.");
}
if (number > playnumber)
{
Console.WriteLine("\tThe given number " + number + " is to high, try again!.");
}
if (number == playnumber)
Console.WriteLine("\tCongrats, you guessed right!");
play = false;
答案 0 :(得分:0)
从提供的代码中可以看到;您有 2 个问题:
Random slumpat = new Random();
int speltal = slumpat.Next();
bool spela = true;
//DONE: while (spela) - we loop while spela == true
// In your current implementation while never runs
while (spela)
{
Console.Write("\n\Gissa på ett tal mellan 1 och 20: ");
int tal = Convert.ToInt32(Console.ReadLine());
if (tal < speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
}
if (tal > speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
}
if (tal == speltal)
{ //DONE: braces - you wnat to show the message AND change spela to false
Console.WriteLine("\tGrattis, du gissade rätt!");
spela = false;
}
}
答案 1 :(得分:0)
由于您说它崩溃了,所以我的答案只是一个猜测:它不是崩溃。
bool play = true;
此变量始终为true
,因此while:
while (!play)
不会做任何事情,因为它与以下内容相同:
while (play == false)
这显然是从未遇见的。该程序刚刚结束。
将时间更改为while(play)
。
也是这个
if (number == playnumber)
Console.WriteLine("\tCongrats, you guessed right!");
play = false;
应该带有括号
if (number == playnumber)
{
Console.WriteLine("\tCongrats, you guessed right!");
play = false;
}