[英]C# DO While loop - Hangman
我正在学习使用C#进行编码的过程。 我无法弄清楚为什么在执行Hangman程序10次后我的循环为什么不会结束,尽管如果将程序设置为较小的数字(例如6),该程序也可以工作。我正在使用do while循环以及设置时到10,我不断得到一个似乎是无限循环的东西,因为它只是不断重复而不是按预期结束。 我没有编译器错误。 这是一项任务。 任何帮助表示赞赏。 这是我写的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace hangman_projectW4
{
class Program
{
static void Main(string[] args)
{
//variable list
char letter0 = 'k';
char letter1 = 'i';
char letter2 = 'd';
char letter3 = 'd';
char letter4 = 'e';
char letter5 = 'r';
char letter;
int score = 0;
string user = "";
//inputs inputs
Console.ForegroundColor = ConsoleColor.Green;
user = Console.ReadLine();
Console.WriteLine("Hi! Welcome to Hangman.");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Player, please enter a letter at prompt.");
Console.Write("_________________________________________________________________");
user = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.Green;
do
{
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
user = Console.ReadLine();
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
user = Console.ReadLine();
if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
}while (score <= 10);
//outputs
user = Console.ReadLine();
user = Console.ReadLine();
Console.Write("_________________________________________________________________");
user = Console.ReadLine();
Console.Write("Guessed Incorrectly: " + score);
Console.ReadLine();
Console.ReadLine();
Console.Write("Thank you for playing Hangman.");
Console.ReadLine();
}
}
}
另外,如果有更好的方式编写代码,这样我就不会重复if十次了……指针会很棒! 谢谢。
如果您尽力而为,它将结束。 一旦您的分数达到11分或更高,您的代码就可以继续并继续要求其他尝试。 停止复制代码。 变得更聪明并最小化您的代码! 您的循环会一遍又一遍地重复同一件事,甚至不检查您是否已经达到10分以上( score
)。
缩短您的循环到这样的事情:
do
{
Console.WriteLine("Please enter a letter: ");
letter = char.Parse(Console.ReadLine());
if (letter == letter0 ||
letter == letter1 ||
letter == letter2 ||
letter == letter3 ||
letter == letter4 ||
letter == letter5)
{
Console.WriteLine("You guessed correctly!");
}
else
{
Console.WriteLine("Incorrect. Try Again.");
score++;
}
} while (score <= 10);
下一步是将所有字母添加到集合或列表中,并缩短if
语句。 ;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.