C#代码在循环中行为怪异

C#代码在循环中行为怪异,c#,console-application,C#,Console Application,当我尝试向代码中添加循环时,它开始假设决策,并在一些写行的开头添加“f”或“d”。 应用程序的前8行是正确的 代码在“按任意键继续”处循环 代码: 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks; 剪刀 { 班级计划 { 静态void Main(字符串[]参数) { { int userScore=0; int计算机评分=0; 对于(int-isRunning=0;isRun

当我尝试向代码中添加循环时,它开始假设决策,并在一些写行的开头添加“f”或“d”。 应用程序的前8行是正确的

代码在“按任意键继续”处循环

代码:

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
剪刀
{
班级计划
{
静态void Main(字符串[]参数)
{
{
int userScore=0;
int计算机评分=0;
对于(int-isRunning=0;isRunning<10;)
{
随机rnd=新随机();
int computerChoice=rnd.Next(1150);
控制台。WriteLine(“欢迎来到石头、布、剪刀!”);
系统线程线程睡眠(400);
控制台。WriteLine(“按escape退出”);
控制台。写(“石头、布或剪刀?”);
字符串userChoice=Console.ReadLine();
if(userChoice==“rock”)
{
if(computerChoice=51&&computerChoice=101)
{
控制台。WriteLine(“计算机选择纸张”);
系统线程线程睡眠(1000);
if(userChoice==“rock”)
{
控制台。WriteLine(“纸打石头!你输了。”);
计算机评分++;
系统.线程.线程.睡眠(500);
Console.WriteLine(“计算机分数为:“+computerScore+”!”);
WriteLine(“你的分数是:“+userScore+”!”);
系统.线程.线程.睡眠(500);
Console.WriteLine(“按任意键继续”);
Console.ReadKey();
}
else if(用户选择==“纸张”)
{
控制台。写线(“领带!”);
系统线程线程睡眠(1000);
Console.WriteLine(“计算机分数为:“+computerScore+”!”);
WriteLine(“你的分数是:“+userScore+”!”);
系统.线程.线程.睡眠(500);
Console.WriteLine(“按任意键继续”);
Console.ReadKey();
}
}
else if(用户选择==“剪刀”)
{
控制台。WriteLine(“剪刀剪纸!你赢了!”);
userScore++;
系统线程线程睡眠(1000);
Console.WriteLine(“计算机分数为:“+computerScore+”!”);
WriteLine(“你的分数是:“+userScore+”!”);
系统.线程.线程.睡眠(500);
Console.WriteLine(“按任意键继续”);
Console.ReadKey();
}
}
如果(计算机分数>用户分数)
{
控制台。WriteLine(“游戏结束!”);
Console.WriteLine(“电脑赢了这一轮,下次好运。”);
Console.WriteLine(“按任意键继续”);
Console.ReadKey();
}
否则如果(用户分数<计算机分数)
{
Console.WriteLine(“你赢了!”);
你打败了电脑!干得好;
Console.WriteLine(“按任意键继续”);
Console.ReadKey();
}
}
}
}
}

感谢并抱歉您的长代码

在“按任意键继续”提示后,您的控制台显示您的按键

一种可能的规避方法是允许他们按任意键继续,然后添加额外的换行符:

Console.WriteLine();

您还可以考虑通过以下调用清除每个答案后的输出窗口:


Console.Clear();

我可以看到一些东西。首先,for循环没有incrementor,因此它将永远运行,永远不会达到退出条件。您应该 换成

for (int isRunning = 0; isRunning < 10; isRunning++) 

这些是你正在按下的键吗?你应该关心的是,你已经复制粘贴了大约六次相同的代码。使用方法作为抽象来捕获常见代码。抱歉,我编辑了一点我的答案。我的意思是,它看起来像是在用户提示后显示你按下的键。修复了前面的字母在我按下“any”键后,它仍然会随机地说“剪刀剪纸!你赢了!”之类的话。开始调试它。在你认为不应该运行的行上设置一个断点,当它运行时,看看你的变量/调用堆栈,看看你是如何做到的。
for (int isRunning = 0; isRunning < 10; isRunning++) 
if (Console.ReadKey().Key == ConsoleKey.Escape) break;