如何使我的程序正确执行?

时间:2019-10-14 08:24:17

标签: c#

这是我的代码,每次执行程序时,它都会正常启动并崩溃。如何解决此问题以使其正常运行?

调试后,我得到以下信息: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;

2 个答案:

答案 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;
}