对于家庭作业,我得到了下面的代码和空白的方法。我一直在努力,但我仍然不明白mutator setComparer或Comparator comparer在这个程序中是如何工作的。我在网上研究了如何使用比较器,但想法仍然不清楚。有人能给我一些指导吗?。
谢谢
import java.util.*;
//Class to represent a "generic" hand of playing-cards
public class PlayingCardHand {
//Instance Variables
private int cardsInCompleteHand; //Maximum # cards in this hand
private ArrayList<PlayingCard> hand; //A hand of Playing-Cards
private Comparator comparer; //Client-provided comparison of PlayingCards
//Constructor
//Appropriate when PlayingCard compareTo() is to be used to compare PlayingCards
public PlayingCardHand(int handSize) {
cardsInCompleteHand = handSize;
hand = new ArrayList<PlayingCard>();
}
//Helper: Compare 2 PlayingCards
// if this.comparer is null, comparison uses compareTo()
// otherwise the Comparator is applied
private int compare(PlayingCard one, PlayingCard two) {
return 0;
}
//Accessor: return # of cards currently in this hand
public int getNumberOfCards() {
return cardsInCompleteHand;
}
public boolean isComplete() {
if (hand.size() == cardsInCompleteHand) {
return true;
}
return false;
}
//Accessor: return COPIES of the cards in this hand
public PlayingCard[] getCards() {
PlayingCard[] temp = new PlayingCard[hand.size()];
for (int i = 0; i < hand.size(); i++)//ch
{
temp[i] = hand.get(i);
}
return temp;
}
//Mutator: allows a client to provide a comparison method for PlayingCards
public void setComparer(Comparator comparer) {
}
//Mutator: Append a new card to this hand
public void appendCard(PlayingCard card) {
int counter = 0;
PlayingCard.Suit su = card.getSuit();
PlayingCard.Rank ra = card.getRank();
PlayingCard temp3 = new PlayingCard(su, ra);
//10 20 goes here 30 40 if insert 25
for (int i = 0; i < hand.size(); i++) {
PlayingCard temp4 = hand.get(i);
PlayingCard.Suit sui = temp4.getSuit();
PlayingCard.Rank ran = temp4.getRank();
if (su.ordinal() <= sui.ordinal() && ra.ordinal() <= ran.ordinal()) {
hand.add(i, temp3);
counter++;
}
}
while (counter == 0) {
hand.add(temp3);
}
}
总有两种选择
1.您的类实现了类似的接口,从而提供了 compareTo() 方法的实现。
2.通过创建自己的比较器类来创建自己的比较器,该类实现比较器接口,从而提供 compare() 方法的实现。
在第一种情况下,您只需要调用Collections。排序(your_collection)或数组。sort(your_array),在第二种情况下调用Collections。排序(your_collection,your_comparator的对象)或数组。排序(you_array,集合的对象)
最好使用II'nd Version,因为它没有为类的所有集合定义默认排序行为。
有关更多详细信息,请参阅Java中的比较器和比较器
基本上,当您希望在同一类型的对象之间进行不同类型的比较时,可以使用Comparator。例如,你有
List<Integer> list = new ArrayList<Integer>();
您希望同时具有升序排序和降序排序。你所做的是写入实现比较器的不同类:
public class Ascending implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
return (o1>o2 ? -1 : (o1==o2 ? 0 : 1));
}
}
public class Descending implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
return (o1<o2 ? -1 : (o1==o2 ? 0 : 1));
}
}
然后你可以对数组进行排序:
Collections.sort(list, new Descending());
您问题的答案:
1-这取决于你如何使用这个职业玩牌。在我看来,你需要初始化它。
2-注释意味着使用PlayingCardHand的代码将决定使用什么排序方法。
我正在开发一个内存卡游戏,它有十二张卡,三行由四张卡组成。为此,布局由三个线性布局组成,每个布局包含四个文本视图。 我如何用另一种方式使用网格布局? 这是我创建卡片行的布局xml:
我试图用Java实现纸牌游戏“Skat” 规则: 有32张卡片。每张牌在游戏中只存在一次。 颜色有:梅花、黑桃、红心、钻石 价值观是:王牌,国王,王后,杰克,十,九,八,七 那些牌被洗牌了。有三名球员 第一轮:每位玩家有3张牌。然后将两张卡片放入Skat。 第二轮:每位玩家再获赠4张牌。 第三轮:每位玩家再获得3张牌。 期望输出:每个玩家的牌都被展示(每张牌都应该存在一次) 我的产量:钻石七(32
我尝试在Java实施纸牌游戏“滑冰” 规则: 有32张牌。每张牌在游戏中只存在一次。 颜色是:梅花、黑桃、红心、钻石 这些值是:王牌、国王、王后、杰克、十、九、八、七 那些牌被洗牌了。有三个队员 第一回合:每位玩家获赠3张牌。然后将2张牌放入滑板中。 第二回合:每名玩家再获4张牌。 第三回合:每名玩家再获3张牌。 想要的输出:露出的每个玩家的牌(每张牌都要存在一次) 我的输出:钻石七(32次) 我
我在做一个匹配的纸牌游戏,但我不明白如何实际做到这一点。我希望有人能帮我解释一下我能做些什么来解决这个问题。 以下是规格: 在一个对的纸牌游戏中,目标是翻出对匹配的纸牌。 https://en.wikipedia.org/wiki/contension_(游戏)以下是我们考虑的配对变化的规则。 在游戏开始时,有n张牌面朝下,其中n是4的倍数。每种卡片有4张,卡片上标有字母a、b、....例如,如果
我正在尝试创建一个MVC模式的回合制卡牌游戏。我对正确的设计有些怀疑。 我创建了一个由这些类组成的模型: 卡(使用套装) 套牌(40张牌,抽取牌法,剩余牌数) 表 套装(enum) 玩家(手牌,人名,手牌数,收藏牌我想) 游戏模型(引用了Deck、Table,并在构造函数中包含两个玩家) 我将在用户按下“新游戏”按钮时创建两个Player对象和GameModel(计算机和Player)。这样做对吗
本文向大家介绍java实现24点纸牌游戏,包括了java实现24点纸牌游戏的使用技巧和注意事项,需要的朋友参考一下 本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下 题目 24点游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏