2010-02-17 526 views
1

我正在制作黑色插口游戏,并且需要使用switch case语句将A转换为11,将T,Q,J和K转换为10,但是我不确定如何执行代码。有人会帮助我解决这个问题吗?如何使用switch case语句将字母转换为数字

到目前为止,我有:

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(); 
+0

鉴于你的代码的风格和使用系统命名空间,不应该被标记为C#不是Java? – jeffora 2010-02-17 01:12:23

+2

为什么这篇文章被标记为'java'?它看起来像是关于C#。 – 2010-02-17 01:12:31

+0

我并不认为有必要将你的整个代码粘贴到这样一个简单的问题上,但我想太多的东西比太少了。 – 2010-02-17 01:14:08

回答

1

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

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版本,以避免有例外,当用户输入无效的输入。

+0

TryParse +1我一直使用/写入这个模式。 – 2010-02-17 02:03:11

2

我不知道为什么一个开关会很冗长。

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"); 
    } 
}