gpt4 book ai didi

java - 选择排序字符串数组 (Java)

转载 作者:行者123 更新时间:2023-11-30 05:57:31 25 4
gpt4 key购买 nike

我需要知道如何对字符串数组进行排序,我知道如何进行选择排序,但是数组中有数字和字母。这个想法是对一手牌进行排序。这就是我所拥有的...

clubsArry[0] = 7C

clubsArry[1] = AC

clubsArry[2] = TC

clubsArry[3] = KC

第二个字符代表牌的花色,在本例中为梅花,第一个字符是牌值(T 代表十,K 为王,A 为王牌等),因此对于clubsArry[0 ] ,这张牌是梅花 7。当我对其进行排序并打印时,我得到的输出是......

7C

AC

KC

TC

因此,所有第一个位置有字母的卡片都已正确排序,但我仍然有 7 个梅花位于输出顶部。我想要的输出是...

AC

KC

TC

7C

我尝试对其进行排序的方法是这样做:

public void sortClubs() // A selection sort, that will sort out the clubs 
{
for (int i = 1; i < clubsArry.length; i++)
{
int s = i-1;
for (int j = i; j < clubsArry.length; j++)
{
if (clubsArry[j].compareTo(clubsArry[s]) < 0)
{
s = j;
}
}
String temp = clubsArry[i-1];
clubsArry[i-1] = clubsArry[s];
clubsArry[s] = temp;
}
}

我似乎无法弄清楚,我打算将其转换为 char 数组,然后转换为 int 并排序并将其全部转换回来,但我认为必须有一种更简单的方法来做到这一点,如果有办法的话。

感谢您的帮助:)

疯狂四叶草

最佳答案

使用比较器,然后使用Arrays.sort()方法。这应该有助于您的编码,因为它可以让您专注于一件事:如何订购 2 张不同的卡片?您必须以某种方式对顺序进行硬编码,这是一种方法。我还没有测试过;并且它仅根据第一个字符进行排序。如果第一个字符相同,那么您应该查看第二个字符。

import java.util.Comparator;

public class CardComparator implements Comparator<String> {

private static final List<Character> CARD_ORDER = Arrays.asList(
'A', 'K', 'Q', 'J', '1', '9', '8', '7', '6', '5', '4', '3', '2');

@Override
public int compare(String card1, String card2) {
if( card1.equals(card2)) {
return 0;
}

int firstIndex = CARD_ORDER.indexOf(card1.charAt(0));
int secondIndex = CARD_ORDER.indexOf(card2.charAt(0));

return firstIndex - secondIndex;
}
}

关于java - 选择排序字符串数组 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506471/

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