gpt4 book ai didi

java - 当按值排序时,compareTo 将 10 设置在 2 之前

转载 作者:行者123 更新时间:2023-12-01 21:33:53 25 4
gpt4 key购买 nike

让我举一个例子来说明我想要实现的目标。只看数字,因为这是一款纸牌游戏。

我有:

harten5 klaveren4 klaveren7 schoppen5 ruiten5 schoppen2 klaverenheer schoppenheer schoppendame schoppen6 klaverenboer schoppen8 ruitenheer klaveren6...

我想根据值对其进行排序:

schoppen2 harten2 ruiten2 klaveren2 ruiten3 harten3 schoppen3 klaveren3 klaveren4 harten4 schoppen4 ruiten4 harten5 schoppen5 ruiten5...

但是我在 2 之前得到 10,如下所示:

schoppen10 ruiten10 harten10 klaveren10 schoppen2 harten2 ruiten2 klaveren2 ruiten3 harten3 schoppen3 klaveren3...

这是我的基本比较方法:

@Override
public int compareTo(Card p) {
return this.value.compareTo(p.value);
}

最佳答案

因为String的(我猜this.valueString)compareTo按字典顺序进行比较,而您想要按数字进行比较。因此,您必须重新实现它,获取子字符串(或找到最后一个数字部分,将其转换为 Integer ,然后在 compareTo 上使用 Integer

总的来说,我认为你的类(class)卡还可以改进一些。特别是,我会重写它:

       class Card {
private String value;
private Integer rank;


...

public int compareTo(Card c) {
// Additional logic if you need to consider
// also value (suite) in comparison
return this.rank.compareTo(c.rank);
}
}

但您也可以使用 enum为此目的。

String java API compareTo

关于java - 当按值排序时,compareTo 将 10 设置在 2 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194746/

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