所以我是編程初學者,我在課堂上有一個項目,要求我打一手橋牌并將其分發給四名玩家。其中一項任務要求我打印出一副洗牌的牌,但是,當我嘗試打印它時,它輸出 52 個空語句而不是洗牌的牌。有人可以幫我解決這個問題嗎?謝謝。import java.util.*;public class Card { public static String[] SUITS = {"Clubs","Diamonds","Hearts","Spades"}; public static String[] RANKS = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; public static String[]deck = new String[52]; public static String[] createDeck() { // initializes and creates deck for(int i = 0; i < RANKS.length ; i++) { for(int j = 0; j < SUITS.length ; j++) { deck[SUITS.length * i + j] = RANKS[i] + " of " + SUITS[j]; } } return deck; } public static void shuffleDeck(String[]deck) { //shuffles deck created from array int n = deck.length; for (int i = 0; i < n; i++) { int r = i + (int)(Math.random() * (n-i)); String temp = deck[r]; deck[r] = deck[i]; deck[i] = temp; System.out.println(deck[i]); } } public static void main(String[] args) { Card.shuffleDeck(deck); }
1 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
createDeck()您的方法中缺少一個調用main():
public static void main(String[] args) {
createDeck();
shuffleDeck(deck);
}
因為以下語句僅用值初始化deck數組52 null:
public static String[]deck = new String[52];
您需要用deck實際值填充數組才能正確顯示它們。您可以安全地標記createDeck()為,void因為您不需要返回deck數組,因為它被聲明為static無論如何都可以訪問。方法也是如此shuffleDeck(),您不需要傳遞數組static,它就可以訪問。
或者您可以采用另一種方法,其中deck將數組聲明為局部變量并將其作為參數傳遞給這些方法。
添加回答
舉報
0/150
提交
取消