2014-10-27 28 views
0

主類:開關箱卡類

public class Card 
{ 
private String cardShort; 
private String cardClas; 
private String cardType; 
public Card(String cardClas, String cardType) 
{ 
    this.cardType = cardType; 
    this.cardClas = cardClas; 
} 
public void cardSelector() 
{ 
    switch(cardClas.toUpperCase()) 
    { 
      case "J" : cardClas = "Jack"; 
        break; 
      case "K" : cardClas = "King"; 
        break; 
      case "Q" : cardClas = "Queen"; 
        break; 
      case "A" : cardClas = "Ace"; 
        break; 
      case "2" : cardClas = "Two"; 
        break; 
      case "3" : cardClas = "Three"; 
        break; 
      case "4" : cardClas = "Four"; 
        break; 
      case "5" : cardClas = "Five"; 
        break; 
      case "6" : cardClas = "Six"; 
        break; 
      case "7" : cardClas = "Seven"; 
        break; 
      case "8" : cardClas = "Eight"; 
        break; 
      case "9" : cardClas = "Nine"; 
        break; 
      case "10" : cardClas = "Ten"; 
        break;      
    } 
    switch(cardType.toUpperCase()) 
    { 
     case "S" : cardClas = "Spades"; 
        break; 
     case "C" : cardClas = "Clubs"; 
        break; 
     case "H" : cardClas = "Hearts"; 
        break; 
     case "D" : cardClas = "Diamonds"; 
        break;     
    } 
} 
public String getClasses() 
{ 
    return cardType; 
} 
public String getType() 
{ 
    return cardClas; 
} 
public String toString() 
{ 
    String theory = getClasses() + " of " + getType(); 
    return theory; 
} 

}

測試儀:

import java.util.Scanner; 
public class CardTester 
{ 
public static void main(String[] args) 
{ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("Enter card: "); 
    String shortHand = sc.next(); 

    if(shortHand.length() == 2) 
    { 
     Card c = new Card(shortHand.substring(0,1),shortHand.substring(1,2)); 
     c.cardSelector(); 
     System.out.println(c.toString()); 
    } else if(shortHand.length() == 3) 
    { 
     Card c = new Card(shortHand.substring(0,2), shortHand.substring(2,3)); 
     c.cardSelector(); 
     System.out.println(c.toString()); 
    } 
} 

}

控制檯: 「輸入卡: AS黑桃 的 小號「 假設輸出「黑桃王牌」。嘗試了一堆不同的修復程序,不知道現在是什麼導致了問題。

第一次使用開關的情況下,可以使用一些幫助...謝謝!

+0

那麼,你有沒有在調試器中通過你的代碼? – OldProgrammer 2014-10-27 00:03:02

+0

這正是您想要使用類型安全枚舉的場景。他們會防止這個錯誤。 – chrylis 2014-10-27 00:24:19

回答

3

您的兩個交換機語句都設置爲cardClas。您需要其中的一個來設置cardType

另外,你的兩個getters很混亂。你似乎以某種方式交換了名字;所以你有getClasses返回cardTypegetType返回cardClas。你可能想解決這個問題。

0

首先,我希望你使用Java 7.如果不是(或者如果你想簡化它),你可以在你的switch語句中使用char而不是String。同時,您還在兩個switch語句中設置cardClas。你的方法getClasses返回cardType和你的getCardType返回cardClas