Java 如何将变量设置为int和String?

Java 如何将变量设置为int和String?,java,validation,set,Java,Validation,Set,我正在制作一个卡片类,需要将正面(卡片上的数字)设置为数字1-13。然而,在一张牌上,1是王牌,13是国王,12是王后,11是杰克。如何将数字1和11-13设置为字符串,如ace、king、queen或jack?感谢您的帮助 public void setFace(int f) { if(f >= 1 && f <= 13) face = f; else

我正在制作一个卡片类,需要将正面(卡片上的数字)设置为数字1-13。然而,在一张牌上,1是王牌,13是国王,12是王后,11是杰克。如何将数字1和11-13设置为字符串,如ace、king、queen或jack?感谢您的帮助

        public void setFace(int f)
        {       
          if(f >= 1 && f <= 13)
            face = f;
          else
            face = 1;
        }

        public int getFace()
        {
          return face;
        } 
public void setFace(int f)
{       

如果(f>=1&&f您对该代码有何看法

public void setFace(int f) {

    switch (f) {
    case 1:
        face = 1;
        break;
    case 11:
        face = 1;
        break;

    case 12:
        face = 1;
        break;

    case 13:
        face = 1;
        break;

    default:
        face = f;
        break;
    }
}
使用枚举如何

public enum CardValue {
    ACE(1), TWO(2), THREE(3), ..... KING(13);

    private int value;

    private CardValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public CardValue getValueFor(int x) {
        // iterate through CardValue enum and return correct instance of the enum
    }
}

我假设你有一个像这样的领域

public int face;
如果这是你的意思,我想它会起作用的

    public String getFace() {
    switch (this.face) {
    case 1:
        face = "Ace";
        break;
    case 11:
        face = "Jack";
        break;
    case 12:
        face = "Queen";
        break;
    case 13:
        face = "King";
        break;
    default:
        return Integer.toString(face);
        break;
    }
}

我认为这很难看而且容易出错:-)…既然你问了。你可以在switchenum中使用enum。enum最适合你的需要need@jigitter:您没有在枚举中提供任何构造函数,可以吗?我不知道这一点…如果您必须调用大多数枚举2、3、4等,对我来说,这表明这实际上是一个整数,是一个整数,而不是
enum
,是一个装备ht抽象。但这是一个困难的案例,因为有脸牌,所以我希望其他人会有不同的意见。好的是你没有“魔术数字”,您不需要处理几十个常量,您可以将比较器和其他相关逻辑整齐地包装起来。这实际上只是从有效的Java手册中抽出一页。@jgitter:但您的枚举名是CardValue,而不是Card。@jgitter:我很乐意。