为什么我的数组包含我从未添加过的整数?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。
是的,因为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');