为什么我的数组包含我从未添加过的整数?C#

本文关键字:整数 添加 我的 数组 包含我 为什么 | 更新日期: 2023-09-27 18:00:56

  int gameTurns = 12;
        do
        {               
            gameTurns -= 1;
            Console.WriteLine("     You have " + (gameTurns) + " attempts left.");
            Console.WriteLine();            
            Console.WriteLine();
            string userEnteredPassword = "";
            Console.WriteLine("Enter a password of 4 digits ");
            userEnteredPassword = Console.ReadLine();
           for (int i = 0; i < numbersToGuess.Length; i++)
            {
                numbersFromPlayer[i] = Convert.ToInt16(userEnteredPassword[i]);                    
                Console.WriteLine(numbersFromPlayer[i]);
            }

注意,numbersToGuess是这样声明的:

 for (int i = 0; i <= 3; i++) 
        {
            numbersToGuess[i] = Convert.ToInt16(sequence.Next(9));
            Console.WriteLine(numbersToGuess[i]);
        }

当我使用以下值运行代码时:1、2、3、4,它打印:49,50,51,52。

为什么我的数组包含我从未添加过的整数?C#

是的,因为49是字符"1"的UTF-16代码单元。

如果您输入"ABCD",它将显示64、65、66、67。

Convert.ToInt16(char)记录为:

将指定的Unicode字符的值转换为等效的16位带符号整数。

如果你想转换每个字符,使"0"变成0,"1"变成1等,你可以使用char.GetNumericValue(char):

numbersFromPlayer[i] = (short) char.GetNumericValue(userEnteredPassword[i]);

或者,如果你很乐意相信玩家可以输入ASCII数字:

numbersFromPlayer[i] = (short) (userEnteredPassword[i] - '0');