Java 一个对象可以与它的类型的其他对象交互吗

Java 一个对象可以与它的类型的其他对象交互吗,java,class,object,Java,Class,Object,我对java比较陌生,正在尝试为我的21点游戏制作一个卡片类。我想知道是否有办法让它知道已经创建的其他卡对象,以检查它们的卡值,并确保我没有创建副本。我们也非常感谢任何其他改进代码的技巧 class Card{ private int cardNum; //1-4 ace 5-8 two 9-12 three 13-16 four 17-20 five 21-24 six 25-28 seven 29-32 eight 33-36 nine //37-40 ten 41-44 jack 45-

我对java比较陌生,正在尝试为我的21点游戏制作一个卡片类。我想知道是否有办法让它知道已经创建的其他卡对象,以检查它们的卡值,并确保我没有创建副本。我们也非常感谢任何其他改进代码的技巧

class Card{
private int cardNum;
//1-4 ace 5-8 two 9-12 three 13-16 four 17-20 five 21-24 six 25-28 seven 29-32 eight 33-36 nine 
//37-40 ten 41-44 jack 45-48 queen 49-52 king
private int value;

public String toString(){
    return findCard() + " " + findSuit();
}

public Card(){
    cardNum = (int)(Math.random * 52)+1;
    giveValue();

}

public String findSuit(){
    if(cardNum % 4 == 1){
        return "of clubs";
    } else if(cardNum % 4 == 2){
        return "of diamonds";
    } else if(cardNum % 4 == 3){
        return "of hearts";
    } else {
        return "of spades";
    }
}
public void giveValue(){
    if(cardNum % 13 == 1){
        value = 11;
    } else if(cardNum % 13 == 2){
        value = 2;
    } else if(cardNum % 13 == 3){
        value = 3;
    } else if(cardNum % 13 == 4){
        value = 4;
    } else if(cardNum % 13 == 5){
        value = 5;
    } else if(cardNum % 13 == 6){
        value = 6;
    } else if(cardNum % 13 == 7){
        value = 7;
    } else if(cardNum % 13 == 8){
        value = 8;
    } else if(cardNum % 13 == 9){
        value = 9;
    } else if(cardNum % 13 == 10){
        value = 10;
    } else if(cardNum % 13 == 11){
        value = 10;
    } else if(cardNum % 13 == 12){
        value = 10;
    } else {
        value = 10;
    }
}
public String findCard(){
    if(value == 11){
        return "ace";
    } else if(value == 2){
        return "two";
    } else if(value == 3){
        return "three";
    } else if(value == 4){
        return "four";
    } else if(value == 5){
        return "five";
    } else if(value == 6){
        return "six";
    } else if(value == 7){
        return "seven";
    } else if(value == 8){
        return "eight";
    } else if(value == 9){
        return "nine";
    } else if(cardNum % 13 == 10){
        return "ten";
    } else if(cardNum % 13 == 11{
        return "jack";
    } else if(cardNum % 13 == 12{
        return "queen";
    } else {
        reutrn "king";
    }
}

giveValue()
不起作用。按照注释中的指定,尝试使用1-4、5-8等,您会发现该值与注释中所述的值不匹配。您需要的是
/
,而不是
%
。我相信你能弄清楚细节。回答你的问题:我喜欢saka1029的方法,这是一种完全不同的方法。但是如果您希望保持您正在处理的方法,但请确保构造函数不使用重复值,请考虑使用<代码> SET。我认为使用
Set
而不是
Set
会使生活更轻松;然后,当您生成一个随机数时,检查该数是否在
集合中。您需要一个由所有
共享的集合,这意味着您可能希望将
集合
作为构造函数参数传入。这只是一种可能性。@ajb令人惊讶的是,尽管它与注释不匹配,但使用的方法生成了52张不同的卡片。a是1,14,27,40(梅花,钻石,黑桃),2是2,15,28,41(钻石,黑桃,黑桃)…@njzk2我认为因为4和13是相对素数,这意味着如果(a mod 4)=(b mod 4)和(a mod 13)=(b mod 13),这意味着(a mod 52)=(b mod 52)。这就是为什么生成的所有卡片都是唯一的。关于这一点,肯定有一些数论定理。