2010-02-17 531 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"); 
    } 
}