gpt4 book ai didi

java - Java中使用不同属性的多个不同对象按字母顺序排序列表

转载 作者:行者123 更新时间:2023-12-02 03:29:04 24 4
gpt4 key购买 nike

对于一个学校项目,我必须制作一个纸牌游戏。卡片可以有不同的类型(Joker、PuntenKaart、KleurKaart)。每个玩家的手上都有多种不同的牌组合(显然)。

我有一个抽象类Kaart(卡片),有3个子类:Joker、KleurKaart(ColourCard)、PuntenKaart(PointsCard)。所有子类都有一个属性“类型”(Joker、KleurKaart、PuntenKaart),但 KleurKaart 有第二个属性,称为 kleur(颜色)。

问题是:在这种情况下如何按字母顺序对玩家的手牌进行排序? Joker 和 PuntenKaart 很简单,只需比较类型,但对于 KleurKaart,我首先必须检查给定的 Kaart 是否是 KleurKaart 的实例,然后将其他卡的类型与 kleur 进行比较?我不明白。

卡尔特级

package domein;

public abstract class Kaart implements Comparable<Kaart>{

private String type;

public Kaart(String type){
this.type = type;
}

public String getType(){
return type;
}

@Override
public int compareTo(Kaart vergelijkingsKaart) {
return type.compareTo(vergelijkingsKaart.type);
}

@Override
public String toString(){
return this.type;
}
}

clown 类

package domein.kaarten; 
import domein.Kaart;

public class Joker extends Kaart {
public Joker() {
super("JokerKaart");
}
}

PuntenKaart 类

package domein.kaarten; 
import domein.Kaart;

public class PuntenKaart extends Kaart {
public PuntenKaart() {
super("PuntenKaart");
}
}

KleurKaart 类

package domein.kaarten; 
import domein.Kaart;

public class KleurKaart extends Kaart {
private String kleur;

public KleurKaart(String kleur) {
super("KleurKaart");
this.kleur = kleur;
}

public String getKleur(){
return this.kleur;
}

@Override
public String toString(){
return this.kleur;
}
}

最佳答案

您应该重写 KleurKaart 类 中的 compareTo,如下所示:

 @Override
public int compareTo(Kaart vergelijkingsKaart) {
int result = super.compareTo(vergelijkingsKaart.type);
if(result==0) { //they are both KleurKaart objects
return ((KleurKaart)this).kleur.compareTo(((KleurKaart)vergelijkingsKaart).kleur);
}
return result;
}

关于java - Java中使用不同属性的多个不同对象按字母顺序排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com