【问题标题】:How do you use a switch case statement to convert Letters into numbers如何使用 switch case 语句将字母转换为数字
【发布时间】:2010-02-17 01:08:33
【问题描述】:

我正在制作二十一点游戏,我需要使用 switch case 语句将 A 转换为 11,并将 T、Q、J 和 K 转换为 10,但是我不知道如何编写代码。有人介意帮我解决这个问题吗?

到目前为止,我有:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Welcome to Black Jack!\n");
            Console.WriteLine("Pick two cards to add to your hand\n");
            Console.WriteLine("Cards 2, 3, 4, 5, 6, 7, 8, 9 all are worth face value\n");
            Console.WriteLine("Ace (A) is worth 11,Ten (T), Jack (J), Queen (Q), and King (K) are all worth 10 points\n");
            Console.WriteLine("Whichever sum is higher, that player is declared the winner\n");
            Console.WriteLine("What are player one's cards?");
            Console.WriteLine("Enter card1 =?");
            Console.WriteLine("Enter card2 =?");
            double card1 = Double.Parse(Console.ReadLine());
            double card2 = Double.Parse(Console.ReadLine());
            Console.WriteLine("You entered: [" + card1, card2 + "]");
            Console.WriteLine("What are player two's cards?");
            Console.WriteLine("Enter card3 =?");
            Console.WriteLine("Enter card4 =?");
            double card3 = Double.Parse(Console.ReadLine());
            double card4 = Double.Parse(Console.ReadLine());
            Console.WriteLine("You entered: [" + card3, card4 + "]");
            Console.ReadLine();

             {

                Console.WriteLine("Calculate player 1: [" + "card1 + card2" + "]");
                Console.WriteLine("Calculate player 2: [" + "card3 + card4" + "]");
                {
                    if (card1 + card2 > card3 + card4)
                        Console.WriteLine("Player One Wins!");
                    else if (card3 + card4 > card1 + card2)
                        Console.WriteLine("Player Two Wins!");
                    Console.ReadLine();

【问题讨论】:

  • 鉴于您的代码风格和使用系统命名空间,这不应该被标记为 C# 而不是 Java?
  • 为什么这篇文章被标记为“java”?看起来是关于 C# 的。
  • 我真的认为没有必要为这么简单的问题粘贴整个代码,但我想太多总比太少好。

标签: c# case switch-statement


【解决方案1】:

我不确定为什么开关会很冗长。

int parseCard(char card)
{
    if ( card >= '2' && card <= '9' ) {
        return card - '0';
    }

    switch ( card ) {
        case 'T':
        case 'J':
        case 'Q':
        case 'K':
            return 10;

         case 'A':
            return 11;

        default:
            throw new ArgumentException("card not valid", "card");
    }
}

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点,但我可能不会在这里使用开关,因为它会很冗长。这是一种方法:

    int parseCard(char card)
    {
        if (card >= '2' && card <= '9')
            return card - '0';
        if (card == 'T' || card == 'J' || card == 'Q' || card == 'K')
            return 10;
        if (card == 'A')
            return 11;
        throw new ArgumentException("card not valid", "card");
    }
    

    您可能更愿意创建一个tryParseCard 版本以避免在用户输入无效输入时出现异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多