您好我正在尝试完成一项作业,但我在完成其中一个课程时遇到困难,该课程名为hand.cs
,如下所示。
hand.cs正在拉动的另外两个数据来源称为card.cs
和twentyOne.cs
,然后人们发表评论我知道这是一个明显的解决方案,对许多读者来说可能看起来很可笑但是,我一直在看这个hand.cs,为期4天,没有任何进展。
对于"public void DisplayHand(bool shortFormat, bool displaySuit)"
的任何和所有帮助都将非常感激,如果您的答案不是太麻烦,您可以概述代码以完成返回并提供一些反馈,了解它是如何工作的。
答案 0 :(得分:1)
在Hand
课程中,您将当前手牌存放在名为List<string>
的{{1}}中。在cards
方法中,您可以使用DisplayHand
循环遍历列表:
foreach
现在,在您的foreach (Card card in cards) {
// process and/or display current card
}
课程中,Card
方法已超载以接受两个参数:
ToString()
这两个相同的参数可以方便地传递到public string ToString(bool shortFormat, bool displaySuit)
类中的DisplayHand
函数。由于您希望从 Cards
方法调用ToString()
方法,因此您可以简单地传入您收到的参数,并将返回一个很好的&amp;格式化的字符串代表卡!您应该在没有太多工作的情况下将上面的循环与对卡DisplayHand
的调用结合起来以获得所需的输出:
ToString()
我使用单个空格作为卡片之间的分隔符;您可以将其更新为您认为合适的任何内容。另外,如果您不希望每个卡片列表都显示在换行符上,只需将public void DisplayHand(bool shortFormat, bool displaySuit) {
StringBuilder cardOutput = new StringBuilder();
foreach (Card card in cards) {
if (cardOutput.Length > 0) {
// we already have one or more cards to display for this hand; separate them
// with a space-delimiter
cardOutput.Append(" ");
}
// add the current card to the display
cardOutput.Append(card.ToString(shortFormat, displaySuit));
}
Console.WriteLine(cardOutput.ToString());
}
更改为Console.WriteLine()
。
*注意:我选择在我的示例中使用StringBuilder
而不是基本字符串连接,原因有两个。第一个是因为在C#中,字符串是不可变的(并且它们的连接效率远低于使用Console.Write()
);第二个是向您展示如何使用StringBuilder
(我假设您不使用它,因为您的示例代码都没有包含它)。要在没有StringBuilder
的情况下执行此操作(删除了评论/等):
StringBuilder