好吧,我一直对记忆游戏的代码有疑问。这就像一个西蒙说的但是在C#中有数字。
问题来自于,在代码中,我使用控制台Readkey让玩家进行输入。但是,当我将数字转换为int时问题就出现了...它就像我放置了一个与数据类型不匹配的值。为什么会发生这种情况=
public void playersTurn() {
for (int i = 0; i < 6; i++) {
if (!(failure)){
playerInput = Console.ReadKey().Key.ToString(); // if i put, for example, 5
Console.Write(playerInput); // it throws 5D50 (this was just to see if something weird was happening)
try{
playerNumber = Convert.ToInt32(playerInput);
}
catch(FormatException e){
Console.Clear();
Console.WriteLine("Solo numeros, chico"); // there is always an exception
}
Console.Write(playerNumber + " ");
if (playerNumber != thoseNumbers[i]) {
Console.WriteLine(" ");
Console.WriteLine("¡ERROR!");
failure = true;
}
}
thoseNumbers[i] = 0;
}
答案 0 :(得分:0)
convert方法抛出异常,因为它需要一个数字。如果你传递一个像5D50这样的字符串,它将不知道如何处理&#39; D&#39;所以它会抛出异常。
Readkey()返回key的代码,而不是key用于的值。试试这个:
Convert.ToInt32(到Console.ReadLine());