我正在學習使用C#編寫代碼的過程。我一直無法弄清爲什麼我的循環不會在我的Hangman程序中輸入10次後結束,儘管如果設置爲6等較小的數字,程序就可以工作。我使用do while循環,並在設置到10歲時,我一直得到似乎是無限循環的東西,因爲它只是不斷重複,並沒有像預期的那樣結束。我沒有編譯錯誤。這是一項任務。任何幫助表示讚賞。這裏是代碼,我寫道:C#DO While循環 - Hangman
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();
}
}
}
另外,如果是寫代碼更好的辦法讓我不重複了,如果別人十倍...指針將是巨大的!謝謝。
歡迎來到Stackoverflow。不要只把你所有的代碼放在這裏。請閱讀:https://stackoverflow.com/help/mcve,並向我們提供一個最小,完整且可驗證的代碼示例。 –
這是在調試器中執行代碼的好機會。記住循環條件正在檢查的是循環如你所期望的那樣修改該值?如果你有一個無限循環,那麼看起來'score'總是'<= 10'。調試並找出它未按照您期望的方式進行修改的原因。 – David