【问题标题】:Guessing Game using for loop with C# Corrected用 C# 更正使用 for 循环的猜谜游戏
【发布时间】:2014-02-22 21:35:27
【问题描述】:

我已经为以下程序编写了代码:

在 for 循环代码块中,我需要执行以下逻辑:

  1. 在屏幕上显示“Enter Guess #:”(例如“Enter Guess 2:”,其中 # 是 用户的猜测)。
  2. 从用户那里获取一个数字并将输入的值存储在输入变量中以进行测试。
  3. 将“输入”转换为整数 (int32) 并存储在“猜测”中。 d。确定现在存储在“猜测”中的输入数字是否为正确答案,并采取以下操作之一:
    • 如果输入的值是答案,则显示“You Win”并退出循环。
    • 告诉用户他们的猜测高于或低于答案。
  4. 如果用户在 5 次猜测中都无法猜出答案,则显示“你输了”

我收到此代码错误。有人可以帮帮我吗?

    int answer = 0, guess;
    string input = "" ;
    //Create an oject of the Random class
    Random number = new Random();
    answer = number.Next(1, 11);



    answer = number.Next(1, 11);
    Console.WriteLine("Select Randomly Number between 1 and 10 ");
 //   guess = (Convert.ToInt32(Console.ReadLine()));
    for (int i = 1; i <=5; i++)
    {                
        Console.Write("Enter Guess :");
        guess = Convert.ToInt32(Console.ReadLine());
        if (guess > answer)
        {
            Console.WriteLine("Guess is Higher");
        }
        else if (guess < answer)
        {
            Console.WriteLine("Guess is Lower");
        }
        else
        {

            Console.WriteLine("You Won !!\t {0} is the correct number", guess);
            break;
            i = 6;

        }
    }
    Console.WriteLine("You Loose");
    Console.WriteLine("The answer is {0} ", answer);
    Console.ReadKey(); 

【问题讨论】:

  • WHERE(在哪一行)你得到 WHAT 错误?我们无法看到和阅读您的屏幕 - 您至少需要告诉我们!
  • 我收到错误,其中 input = Convert.ToInt32(Console.ReadLine());输入 = 猜测;
  • 这部分太棒了...if (i == number) { if (i &lt; number) { ... } } 如果 i 等于数字,那么 i 永远不会大于 小于数字哈哈。此代码需要更多帮助,而不仅仅是修复错误。

标签: c# visual-studio-2012


【解决方案1】:

您的代码有很多错误。我无法解释全部,但这里是固定版本,仍然不完美,但它应该可以满足您的需求:

 int guess = 0, number;
 //Create an object of the Random class
 Random rnd = new Random();
 number  = rnd.Next(1, 11);
 for (int i = 0; i < 6; i++)
 {
     Console.Write("Enter Guess :");
     guess = Convert.ToInt32(Console.ReadLine());
     if (guess > number)
     {
          Console.WriteLine("Higher, try again");
     }
     else if (guess < number)
     {
          Console.WriteLine("Lower,  try again");
     }
     else
     {
         Console.WriteLine("You Won !!\t {0} is the correct number", guess);
         i = 6;
     }
     if (i == 5)
     {
          Console.WriteLine("You Loose");
     }
  }
  Console.ReadLine();

更新:这是您的错误列表:

  1. 在下面的input 行中是string,但您正试图将其分配给integer

    input = Convert.ToInt32(Console.ReadLine());
    
  2. 在这一行,你试图覆盖input,为什么?

    input = guess;
    
  3. 您将inumber 进行比较,这是错误的,因为您应该将用户的选择与随机数进行比较,而输入仍然是字符串,您不能直接将整数与字符串进行比较。

  4. 在这一行中answer 是整数,您尝试将其与string 连接:

    answer += (Console.ReadLine() + " ");
    

可能还有其他一些错误,但无论如何,如果您将您的代码与上面的代码进行比较,您将看到所有这些错误的解决方案。

【讨论】:

  • 使用此代码,出现错误消息“输入字符串格式不正确” where guess = convert.ToInt32(Console.Readline());当在程序结束时第二次写入
  • @user3341720 这段代码可以完美地为我编译。该行应该和他的完全一样,包括大写。
  • @user3341720,如果您只是按回车键或输入数字以外的内容,您将收到“输入字符串格式不正确”的错误。这是因为Convert.ToInt32 无法将该字符串转换为数字。
  • @user3341720 如果输入数字,则不会看到该错误消息。如果要忽略无效输入,请使用 int.TryParse 并检查返回结果。如果为 true,则表示数字有效,否则表示数字无效。
  • @David,如果我不输入任何内容,则会收到“输入字符串.....”错误消息
猜你喜欢
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2015-10-22
相关资源
最近更新 更多