主类:
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());
}
}
}
控制台: “输入卡: 作为 黑桃 S ” 应该输出“黑桃A”。尝试了一系列不同的修复,但不确定现在是什么导致了问题。
第一次使用 switch case,需要一些帮助...谢谢!
最佳答案
两个 switch 语句都在设置 cardClas
。您需要其中之一来设置 cardType
。
另外,你的两个 setter/getter 非常令人困惑。你们似乎不知何故交换了名字;因此,您有 getClasses
返回 cardType
和 getType
返回 cardClas
。您可能想要解决这个问题。
关于java - 开关盒卡类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26579411/