我對如何獲得每個玩家的排名有點困惑。我創建了一個整數陣列,因為我認為它會使比較更容易,但是我不知道如何比較字串中給出的等級。
對于等級 1,列印出“A of suit”
等級 11 -> “花色 J”
等級 12 -> “花色 Q”
等級 13 -> “花色 K”
有沒有辦法列印出 rankString 的排名?
創建兩個玩家陣列的戰爭方法,試圖在這里進行比較,但不確定如何獲得排名。
import java.util.ArrayList;
import java.util.Collections;
public class War {
public static void main(String[] args) {
CardDeck deck = new CardDeck();
int size = deck.Deck().size();
ArrayList player1 = new ArrayList<>(deck.Deck().subList(0, (size) / 2));
ArrayList player2 = new ArrayList<>(deck.Deck().subList((size) / 2, size));
System.out.println("Player 1: " player1.get(0));
System.out.println("Player 2: " player2.get(0));
CardDeck 方法:創建牌組并洗牌
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CardDeck extends War{
public int rank;
private String suit, rankString;
public List<String> Deck() {
String[] cardSuit = {"Hearts", "Spades", "Clubs", "Diamonds"};
int[] cardRank = {1,2,3,4,5,6,7,8,9,10,11,12,13};
String[] deck = new String[52];
for (int i = 0; i < deck.length; i ) {
rank = cardRank[i%13];
suit = cardSuit[i/13];
switch(rank){
case 1 :
rankString = "A";
deck[i] = rankString " of " suit;
break;
case 11 :
rankString = "J";
deck[i] = rankString " of " suit;
break;
case 12 :
value = 12;
rankString = "Q";
deck[i] = rankString " of " suit;
break;
case 13 :
rankString = "K";
deck[i] = rankString " of " suit;
break;
default:
deck[i] = rank " of " suit;
}
}
List<String> deckList = Arrays.asList(deck);
Collections.shuffle(deckList);
return deckList;
}
}
我只使用了一點 Java,對創建單獨的 getRank 方法的作業原理感到困惑
編輯:通過等級,我的意思是卡值的整數。所以對于花色A,我想取回1, 2=2...J=11, Q=12,K=13。
uj5u.com熱心網友回復:
你自己搞糊涂了。您的班級名為CardDeck. 這表明它代表一整副牌。一副紙牌沒有等級,也沒有花色。當然,我不會去商店買一包只有 52 張黑桃 A 的牌。
這是一張單張牌,有等級和花色。
您的Deck()方法回傳一個字串串列。這不是面向物件的。
我建議您執行以下操作:
- 創建一個名為
Card. 它有等級和西裝的欄位。我建議你制作這些列舉 (enum Suit { SPADES, HEARTS, CLUBS, DIAMONDS; }和enum Rank { ACE, TWO, THREE, .., JACK, QUEEN, KING;},但如果你還沒有涉及到,你可以堅持使用int。不需要有第三個字串表示欄位,你可以并且應該每次都計算它(它是一臺計算機它每秒可以做幾十億次。如果你要強調性能的話,記憶體查找會比計算它慢)。 - 向 Card 添加有用的方法。當然,
public String toString() {}它會根據等級和花色計算出一個很好的字串表示(這將rankString " of " suit是要去的地方)。 - 現在創建一個名為
CardDeck. 它有一個欄位 (List<Card>)。創建一個稱為reshuffle()清除串列的方法,然后生成所有 52 張卡片,然后shuffleRemaining()對其自身進行呼叫。寫shuffleRemaining()它只是按原樣打亂串列。 - 給它一個建構式,它會呼叫
reshuffle()自己 - 現在new CardDeck()給你一個洗牌的 52 張牌。 - 添加更多方法。
draw(),例如,它會執行類似return list.remove(0);的操作 - 洗掉“頂部”卡并將其回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480741.html
