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]);
}
Run Code Online (Sandbox Code Playgroud)
请注意,numbersToGuess声明如下:
for (int i = 0; i <= 3; i++)
{
numbersToGuess[i] = Convert.ToInt16(sequence.Next(9));
Console.WriteLine(numbersToGuess[i]);
}
Run Code Online (Sandbox Code Playgroud)
当我使用值1,2,3,4运行我的代码时,它打印:49,50,51,52.
是的,因为49是字符'1'的UTF-16代码单元.
如果您输入"ABCD",它将显示64,65,66,67.
将指定的Unicode字符的值转换为等效的16位有符号整数.
如果你想转换每个字符使'0'变为0,'1'变为1等,你可以使用char.GetNumericValue(char):
numbersFromPlayer[i] = (short) char.GetNumericValue(userEnteredPassword[i]);
Run Code Online (Sandbox Code Playgroud)
或者,如果您乐意相信播放器输入ASCII数字:
numbersFromPlayer[i] = (short) (userEnteredPassword[i] - '0');
Run Code Online (Sandbox Code Playgroud)