Java 通过/返回不工作 公共类21点{ 静态字符串[]组=新字符串[52]; //创建一副牌 公共静态void main(字符串[]args){ 字符串[]套装={“梅花”、“钻石”、“红心”、“黑桃”}; 字符串[]秩={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”, “杰克”、“女王”、“国王”、“王牌”}; for(int a=0;a

Java 通过/返回不工作 公共类21点{ 静态字符串[]组=新字符串[52]; //创建一副牌 公共静态void main(字符串[]args){ 字符串[]套装={“梅花”、“钻石”、“红心”、“黑桃”}; 字符串[]秩={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”, “杰克”、“女王”、“国王”、“王牌”}; for(int a=0;a,java,Java,因此,我的主要方法的第一部分生成了一副牌,并且工作完全正常(我已经单独测试了它)。我正试图让我的第二张随机卡从牌组中返回一张随机抽取的卡。我只能让它打印出‘G’,在那里我可以测试它是否工作。非常感谢您的帮助。谢谢大家! 您需要分配返回值 public class BlackJack { static String[] deck = new String[52]; //Creates Deck of cards public static void main (Stri

因此,我的主要方法的第一部分生成了一副牌,并且工作完全正常(我已经单独测试了它)。我正试图让我的第二张随机卡从牌组中返回一张随机抽取的卡。我只能让它打印出‘G’,在那里我可以测试它是否工作。非常感谢您的帮助。谢谢大家!

您需要分配返回值

public class BlackJack {

    static String[] deck = new String[52];

    //Creates Deck of cards
    public static void main (String[] args)  {      
        String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
        String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
                "Jack", "Queen", "King", "Ace" };

        for (int a=0; a < rank.length; a++) {
            for (int b=0; b < suit.length; b++){
                deck[suit.length*a + b] = (rank[a] +" of "+ suit[b]);
            }
        }

        //Trying to get this to print out the returned card name
        String card = "G";
        randomCard(card);
        System.out.println(card);
    }

    //Pulls a random card from the deck
    public static String randomCard(String cardName) {          
        //Generates a random number between 0 and 52
        int card = (int)(Math.random()*53);
        cardName = (deck[card]);
        return cardName;

    }

}
在方法
cardName=deck[card]中进行的赋值仅更新本地方法
字符串
参考
cardName
,在方法范围之外没有任何影响

另外,为了更好地随机分发卡片,请查看。阅读和了解有关洗牌的更多信息

card = randomCard(card);
ArrayList deck=new ArrayList();
字符串[]套装={“梅花”、“钻石”、“红心”、“黑桃”};
字符串[]秩={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”,
“杰克”、“女王”、“国王”、“王牌”};
for(int a=0;a
您需要分配返回值

public class BlackJack {

    static String[] deck = new String[52];

    //Creates Deck of cards
    public static void main (String[] args)  {      
        String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
        String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
                "Jack", "Queen", "King", "Ace" };

        for (int a=0; a < rank.length; a++) {
            for (int b=0; b < suit.length; b++){
                deck[suit.length*a + b] = (rank[a] +" of "+ suit[b]);
            }
        }

        //Trying to get this to print out the returned card name
        String card = "G";
        randomCard(card);
        System.out.println(card);
    }

    //Pulls a random card from the deck
    public static String randomCard(String cardName) {          
        //Generates a random number between 0 and 52
        int card = (int)(Math.random()*53);
        cardName = (deck[card]);
        return cardName;

    }

}
在方法
cardName=deck[card]中进行的赋值仅更新本地方法
字符串
参考
cardName
,在方法范围之外没有任何影响

另外,为了更好地随机分发卡片,请查看。阅读和了解有关洗牌的更多信息

card = randomCard(card);
ArrayList deck=new ArrayList();
字符串[]套装={“梅花”、“钻石”、“红心”、“黑桃”};
字符串[]秩={“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”,
“杰克”、“女王”、“国王”、“王牌”};
for(int a=0;a
您的
随机卡
有一些错误

ArrayList<String> deck = new ArrayList<String>();

String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
        "Jack", "Queen", "King", "Ace" };

for (int a=0; a < rank.length; a++) {
    for (int b=0; b < suit.length; b++){
        deck.add(rank[a] +" of "+ suit[b]);
    }
}

Collections.shuffle(deck, new SecureRandom());
String randomCard = deck.get(0);
然后使用以下命令调用该方法:

public static String randomCard() { // no need for an argument
    int card = (int)(Math.random()*52); // was 53, but there are only 52 cards - 
                                        // you want to generate the number 
                                        // between 0 and 51
    String cardName = deck[card]; // removed (" ")
    return cardName;
}

您的
随机卡
有一些错误

ArrayList<String> deck = new ArrayList<String>();

String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
        "Jack", "Queen", "King", "Ace" };

for (int a=0; a < rank.length; a++) {
    for (int b=0; b < suit.length; b++){
        deck.add(rank[a] +" of "+ suit[b]);
    }
}

Collections.shuffle(deck, new SecureRandom());
String randomCard = deck.get(0);
然后使用以下命令调用该方法:

public static String randomCard() { // no need for an argument
    int card = (int)(Math.random()*52); // was 53, but there are only 52 cards - 
                                        // you want to generate the number 
                                        // between 0 and 51
    String cardName = deck[card]; // removed (" ")
    return cardName;
}

字符串是不可变的。你的方法

card = randomCard();
不(也不能)更改传入的字符串对象。这个

public static String randomCard(String cardName)
仅更改本地
cardName
引用以指向新字符串。但是,传入的对象不会更改。因此,您需要显式地将
card
分配给方法的返回值

cardName = ("deck[card]");

字符串是不可变的。你的方法

card = randomCard();
不(也不能)更改传入的字符串对象。这个

public static String randomCard(String cardName)
仅更改本地
cardName
引用以指向新字符串。但是,传入的对象不会更改。因此,您需要显式地将
card
分配给方法的返回值

cardName = ("deck[card]");

您应该看看原因:传递字符串的值。 分配时添加到Weston的解决方案

card = randomCard(card);
它实际上是在card变量中分配返回值,但是当您这样做时

card = randomCard(card);

它所做的只是更改函数randomCard的cardName参数的值。

您应该查看原因:字符串的传递值。 分配时添加到Weston的解决方案

card = randomCard(card);
它实际上是在card变量中分配返回值,但是当您这样做时

card = randomCard(card);

它所做的只是更改函数randomCard的cardName参数值。

Oh my。。。非常感谢你!我还是个新手哦我的。。。非常感谢你!我还是个新手,我很感激!我将“”添加到牌组[卡片]中,只是为了测试是否可以让它返回该卡片,而不是实际的卡片。是我消除过程的一部分,我只是忘记在复制/粘贴到这里之前删除它们。非常感谢,尽管我很感激!我将“”添加到牌组[卡片]中,只是为了测试是否可以让它返回该卡片,而不是实际的卡片。是我消除过程的一部分,我只是忘记在复制/粘贴到这里之前删除它们。不过非常感谢