C# - 将正确猜测的总数保存在一个变量中

C# - Keeping total number of correct guesses inside a variable

编程初学者并且被分配了正面或反面的抛硬币项目。

我已经想出如何让它随机生成请求的翻转次数并打印出答案。但是,我应该将它添加到 correctCount 变量中的用户输入次数加起来,但我找不到任何方法。我尝试在此处和不同网站上搜索 Google。我假设我需要接受他们的字符串输入并以某种方式转换它,比如 if result == string,然后基本上是 correctCount + 1,但无法弄清楚如何实现这一点,因为你不能用 int & string。任何信息或提示都会很有帮助 - 谢谢!

    class Coin
    {

        static void Main(string[] args)

        // UserInput
        {
            Console.Write("Guess which will have more: heads or tails?");
            string headsOrTailsGuess = Console.ReadLine() + "\n";
  

            Console.Write("\n" + "How many times shall we flip the coin? ");
            int numberOfFlips = int.Parse(Console.ReadLine() + "\n");


            // Declare variables
            int correctCount = 0;
            int heads = 0;
            int tails = 1;

            Random rand = new Random();

            for (int i = 0; i < numberOfFlips; i++)
            {
                int result = rand.Next(0, 2);

                if (result == 0)
                {
                    Console.WriteLine("Heads!");
                } 
                else 
                {
                    Console.WriteLine("Tails!");
                }
 
            }
            Console.WriteLine("Your guess, " + headsOrTailsGuess + "came up " + correctCount + " time(s).");```

正如 PMF 所提到的,您不仅要接收用户选择,还要对其进行分析。 尽管您可能想要对用户输入添加一些验证,但此处进行简单比较就足够了。

static void Main(string[] args)

    // UserInput
    {
        int choice; //variable for parsed user choice
        Console.Write("Guess which will have more: heads or tails?");
        string headsOrTailsGuess = Console.ReadLine() + "\n";
        if(headsOrTailsGuess.ToLower().Trim() == "heads"){ //here you look if its heads
            choice = 0;
        }
        else{ //we can write additional if here to avoid other options from counting as tails
            choice = 1;
        }

        Console.Write("\n" + "How many times shall we flip the coin? ");
        int numberOfFlips = int.Parse(Console.ReadLine() + "\n");


        // Declare variables
        int correctCount = 0;
        int heads = 0;
        int tails = 1;

        Random rand = new Random();

        for (int i = 0; i < numberOfFlips; i++)
        {
            int result = rand.Next(0, 2);

            if (result == 0)
            {
                Console.WriteLine("Heads!");
            } 
            else 
            {
                Console.WriteLine("Tails!");
            }
            if(result == choice){ //comparing result to parsed choice and incrementing the counter
                correctCount++; 
            }

        }
        Console.WriteLine("Your guess, " + headsOrTailsGuess + "came up " + correctCount + " time(s).");

}

这是使用 Linq 的另一种方法。

using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
         // UserInput
        {
            Console.Write("Guess which will have more: heads or tails?");
            string headsOrTailsGuess = Console.ReadLine();
  
            Console.Write("\n" + "How many times shall we flip the coin? ");
            int numberOfFlips = int.Parse(Console.ReadLine() + "\n");

            // Declare variables
            List<string> resultList  = new List<string>();
            Random rand = new Random();
      
            for (int i = 0; i < numberOfFlips; i++)
            {
                int result = rand.Next(0, 2);
                resultList.Add(result == 1? "Heads!" : "Tails!");
            }
            var guessCount  = resultList.Where(a=>a.ToUpper().Contains(headsOrTailsGuess.ToUpper())).Count();
            resultList.ForEach( a=> Console.WriteLine(a));
            Console.WriteLine("Your guess, " + headsOrTailsGuess + " came up " + guessCount + " time(s).");
            Console.WriteLine(headsOrTailsGuess);
        }
    }
}
using System;

Console.WriteLine("Guess which will have more: heads or tails?");

var headsChosen = false;

var input = string.Empty;
do
{
    input = Console.ReadLine();

    headsChosen = input.ToLower() == "heads";

} while (input.ToLower() != "heads" && input.ToLower() != "tails");


Console.WriteLine("How many times shall we flip the coin?");

var flips = 0;

do
{
} while (!int.TryParse(Console.ReadLine(), out flips));

var rnd = new Random();

var heads = 0;
var tails = 0;

for (int i = 0; i < flips; i++)
{
    if (rnd.Next(0, 2) == 0)
    {
        Console.WriteLine("Heads!");
        heads++;
    }
    else
    {
        Console.WriteLine("Tails!");
        tails++;
    }
}

var userGuessed = (headsChosen && heads > tails) || (!headsChosen && tails > heads);

Console.WriteLine($"You {(userGuessed ? "guess" : "loose")}!");