C# 掷硬币模拟器赢了';我不算正面和反面
我正在尝试制作一个抛硬币模拟程序,它将根据用户输入的数字掷硬币数次。它将显示投币号码和正面或反面。然后它会显示有多少正面和反面被翻转,但它不会显示正确的次数,我不知道如何修复这个问题 任何帮助都将不胜感激 这是我到目前为止得到的C# 掷硬币模拟器赢了';我不算正面和反面,c#,C#,我正在尝试制作一个抛硬币模拟程序,它将根据用户输入的数字掷硬币数次。它将显示投币号码和正面或反面。然后它会显示有多少正面和反面被翻转,但它不会显示正确的次数,我不知道如何修复这个问题 任何帮助都将不胜感激 这是我到目前为止得到的 Console.Write("\n\n"); Console.Write("------------------------------------------------"); Console.WriteLine("\nThis Program simulates t
Console.Write("\n\n");
Console.Write("------------------------------------------------");
Console.WriteLine("\nThis Program simulates tossing a coin mutliple times");
Console.Write("------------------------------------------------");
Console.Write("\n\n");
int Heads = 0, Tails = 0;
int compChoice = 0;
int attempts;
Random rnd = new Random();
Console.WriteLine("How many coin tosses?");
coinTossChoice = int.Parse(Console.ReadLine());
attempts = coinTossChoice;
compChoice = rnd.Next(0, 2);
do
{
if (attempts == coinTossChoice)
{
if (compChoice == 0)
{
Console.WriteLine("Toss Number# ");
Console.WriteLine("\nHeads");
Heads++;
}
else if (compChoice == 1)
{
Console.WriteLine("Toss Number# ");
Console.WriteLine("\nTails");
Tails++;
}
}
} while (attempts != coinTossChoice);
Console.WriteLine("\nNumber of Heads {0} Number of Tails {1} .", Heads, Tails);
在这里,您的代码中有一些细节,我对所做的更改进行了注释,以便您能够理解这个想法
Console.Write("\n\n");
Console.Write("------------------------------------------------");
Console.WriteLine("\nThis Program simulates tossing a coin mutliple times");
Console.Write("------------------------------------------------");
Console.Write("\n\n");
int Heads = 0, Tails = 0;
int compChoice = 0;
int attempts;
Random rnd = new Random();
Console.WriteLine("How many coin tosses?");
int coinTossChoice = int.Parse(Console.ReadLine());
//attempts is the counter for each toss
attempts = 1;
do
{
//compChoice is the coin toss containing 0 or 1 at random
compChoice = rnd.Next(0, 2);
if (compChoice == 0)
{
Console.WriteLine("Toss Number# " + attempts);
Console.WriteLine("\nHeads");
Heads++;
}
else if (compChoice == 1)
{
Console.WriteLine("Toss Number# " + attempts);
Console.WriteLine("\nTails");
Tails++;
}
//increment attempt
attempts++;
//cycle as many times as the user requested
} while (attempts <= coinTossChoice);
Console.WriteLine("\nNumber of Heads {0} Number of Tails {1} .", Heads, Tails);
Console.ReadKey();
Console.Write(“\n\n”);
Console.Write(“------------------------------------------------------------”);
WriteLine(“\n此程序模拟多次抛硬币”);
Console.Write(“------------------------------------------------------------”);
控制台。写入(“\n\n”);
int头=0,尾=0;
int compChoice=0;
智力测验;
随机rnd=新随机();
控制台。WriteLine(“抛了多少硬币?”);
int cointoschoice=int.Parse(Console.ReadLine());
//每次掷骰的计数器是“尝试”
尝试次数=1;
做
{
//compChoice是随机包含0或1的抛硬币
compChoice=rnd.Next(0,2);
if(compChoice==0)
{
Console.WriteLine(“投掷号码”#“+尝试次数);
Console.WriteLine(“\nHeads”);
Heads++;
}
else if(compChoice==1)
{
Console.WriteLine(“投掷号码”#“+尝试次数);
Console.WriteLine(“\nTails”);
Tails++;
}
//增量尝试
尝试++;
//按用户要求的次数循环
}while(尝试)从不更改compChoice
的值。在程序开始时为其分配一个随机数,但从不调用rnd.Next()
再次在循环中。另外,尝试==cointoschoice
的目的是什么?您希望循环体运行cointoschoice
多次,但随后您会阻止循环体,因此它只执行一次,而且您也永远不会更改尝试次数。您需要在零开始尝试,因为没有尝试尚未完成。然后,对于每次尝试,获取一个新的随机数,并确定它是正面还是反面。之后,在每次尝试中,将一个添加到尝试中,以跟踪已完成的尝试数。如果循环中有则去掉该。此外,为什么要复制行控制台。WriteLine(“抛出数字”+尝试数)
在每个if/else
块中?只需在if
语句之前执行一次,保留您的代码