计数器一次下降4,而不是一个(C#)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计数器一次下降4,而不是一个(C#)相关的知识,希望对你有一定的参考价值。

我是C#的新手,在学习了基础知识之后,我决定要制作一个Hangman游戏。问题在于,通常每当我错过一个字母时,计数器就从8减1,而我却不知道为什么。

 static void Main(string[] args)
    {
        int Chances= 8;
        bool key = false;
        int N= 10;
        char[] Word = { 'P', 'R', 'O', 'G', 'R', 'A', 'M' };
        Console.WriteLine("The word is:_ _ _ _ _ _ _");
        Console.Write("Please input a letter:");
        while (key == false)
        {
            char letter = Convert.ToChar(Console.Read());
            N = Numberofletter(letter);
            Console.WriteLine(N);
            while (N == 0 && Chances > 0)
            {
                Chances--;
                Console.WriteLine("The letter is incorrect you have " + K + " tries Remaining");
                letter = Convert.ToChar(Console.Read());



            };
            if (Chances == 0)
            {
                Console.WriteLine("Gameover");
                return;

            }
static int Numberofletter(char letter)
    {
        int N = 0;
        char[] Word = { 'P', 'R', 'O', 'G', 'R', 'A', 'M' };
        if (Word[0] == letter)
        { N = 1; }
        else if (Word[1] == letter)
        { N = 2; }
        else if (Word[2] == letter)
        { N = 3; }
        else if (Word[3] == letter)
        { N = 4; }
        else if (Word[5] == letter)
        { N = 6; }
        else if (Word[6] == letter)
        { N = 7; }
        else { N = 0; }
        return N;
    }
答案

问题出在您的while循环中。

您以N =猜字母的位置= 0进入循环。在循环内,您要求再输入一个字母,但是从不计算其位置。因此,即使单词中有字母,也永远不会为N赋值。这意味着循环将继续运行并递减chances直到chances < 0;

简单添加

N = Numberofletter(letter);

阅读下一封信后。

另一答案

我不知道是否有人会遇到与我相同的问题,但是我会在这里张贴我的错误,因此至少我希望不会重复出现。

而不是letter=Convert.ToChar(Console.Read());您应该使用letter=Convert.ToChar(Console.ReadLine());我不知道为什么会出问题,但是发生了,请随机尝试一下,然后就可以了

以上是关于计数器一次下降4,而不是一个(C#)的主要内容,如果未能解决你的问题,请参考以下文章

带有while语句范围catch的if语句中的C ++错误

Thymeleaf 模板 - 有没有办法装饰模板而不是包含模板片段?

句柄而不是指针的引用计数

Java网络编程(读书笔记)

三种梯度下降方法与代码实现

web代码片段