使用可空字符在Hangman游戏中打印单词以表示猜测的字母

时间:2017-03-11 04:08:20

标签: c#

这是我一直试图制作的刽子手控制台应用程序游戏的一部分(缩减以显示错误):

string TheWord = "dog";
char?[] ThusWord = new char?[TheWord.Length];

// Display the underscores of missing letters. And also the mentioned letters.
foreach (char c in ThusWord)
{
    Console.Write("{0} ", ThusWord[c].HasValue ? ThusWord[c] : "_");
}

我希望它显示字母/下划线,以向用户显示已经猜到的内容/什么没有。在这种一般格式" _ _ _ a _ _" (' a'是一封猜测的信件,下划线代表没有被猜到的内容。

但我现在收到的错误是:

foreach (char c in ThusWord)

错误:

  

未处理的类型' System.InvalidOperationException'发生在mscorlib.dll中      附加信息:Nullable对象必须具有值。

我猜测它可能与我使用char数组的事实有关。

1 个答案:

答案 0 :(得分:3)

你不应该直接将char?转换为char(它可能为空,因此你会得到例外)。 ThusWord[c]也是错误的。 c是char本身。您使用索引器[int]来获取字符串指定位置的char。

foreach (char? c in ThusWord)
{
   if (c.HasValue)
   {
       Console.Write(c + " ");
   }
   else
   {
       Console.Write("_ ");
   }
}
相关问题