为什么我的数组包含我从未添加过的整数?C# int gameTurns=12; 做 { gameTurns-=1; WriteLine(“您还有”+(游戏回合数)+“剩余尝试次数”); Console.WriteLine(); Console.WriteLine(); 字符串userEnteredPassword=“”; Console.WriteLine(“输入4位密码”); userEnteredPassword=Console.ReadLine(); for(int i=0;i

为什么我的数组包含我从未添加过的整数?C# int gameTurns=12; 做 { gameTurns-=1; WriteLine(“您还有”+(游戏回合数)+“剩余尝试次数”); Console.WriteLine(); Console.WriteLine(); 字符串userEnteredPassword=“”; Console.WriteLine(“输入4位密码”); userEnteredPassword=Console.ReadLine(); for(int i=0;i,c#,arrays,C#,Arrays,请注意,numbersToGuess的声明如下: int gameTurns = 12; do { gameTurns -= 1; Console.WriteLine(" You have " + (gameTurns) + " attempts left."); Console.WriteLine();

请注意,numbersToGuess的声明如下:

  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]);
            }

for(int i=0;iYes),因为49是字符“1”的UTF-16代码单位

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

记录如下:

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

如果要转换每个字符,使“0”变为0,“1”变为1等,可以使用:

或者,如果您愿意信任播放机输入ASCII数字:

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

这些看起来像字符的UTF值,
'1'、'2'、'3'…
,使用
numbersToGuess[i]=(int)Char.GetNumericValue(sequence.Next(9))
将我的字符串数值转换为人类所代表的整数的正确方法是什么?@Pokarface:查看我的更新答案-我提供了两个选项。谢谢。我真的不知道为什么我总是被否决,而不是接受否决选民的指导,但你今天帮了我:)也许我的问题会帮助其他有同样疑问但害怕被否决而不敢提问的人
numbersFromPlayer[i] = (short) char.GetNumericValue(userEnteredPassword[i]);
numbersFromPlayer[i] = (short) (userEnteredPassword[i] - '0');