gpt4 book ai didi

用于比较数组位置的Java函数?

转载 作者:行者123 更新时间:2023-12-02 01:45:03 25 4
gpt4 key购买 nike

我最近开始学习 Java 是为了好玩,但遇到了以下问题:我有 2 个数组 int[] 保存扑克牌的表示。数组中的位置 0 表示它是否是同花,其中的数字表示高牌的值。数组中的位置 1 表明它是否属于某种类型以及卡片的值(value),因此这里的 5 表示 5:s 中有四种类型,依此类推。

所以我想比较所有玩家数组的第一个位置 0(对于同花顺)和具有最高数字的玩家获胜。如果所有玩家都有 0 或 2 或更多玩家具有相同的数字,则步进到数组中的位置 1 并进行比较等等。

为了简化代码,我尝试执行一个比较函数,该函数比较 2 个玩家的手牌,并返回如果手牌 1(在代码数组 1 中)高于手牌 2(数组 2)

  • 如果 H1 > H2 返回 1
  • 如果 H1 < H2 返回 -1
  • 如果相等则返回0

我确实执行了以下代码(不起作用):

int isBetterHand(int[] array1, int[]array2){ //private
if(array1.length > array2.length){ throw new RuntimeException("arrayCompare got arrays of different length.");}
int arrayLength = array1.length;
for(int i = 0; i < arrayLength; i++){
if(array1[i] > array2[i]){
return 1;
} else if(array1[i] < array2[i]){
return -1;
} else {
return 0;
}
}
return 0;
}

我认为在Java中你不能写if array1[0](比较器如<、>、==)array2[0]

如何修复上面的代码?还有更快、更好、更智能的方法吗?数组有 26 个数字长。我需要共同比较最多 8 个数组。

假设游戏中还剩 5 名玩家,我可以得到一个类似的矩阵(我只输入前 5 个位置:

P1 0, 0, 0, 0, 0, ...P2 0, 0, 0, 0, 0, ...P3 0, 2, 0, 0, 0, ...P4 0, 0, 13, 3, 0, ...P5 0, 0, 0, 0, 14, ...

在上面的例子中,pos[0] 意味着同花顺中的高牌,没有人有这个在 pos[1] 中,它显示 P3 是获胜者,在 2:s 内有 4 个同类((pos[2]&[3] 显示 P4 满堂 K 超过 3(但 P3 4 更好...)))

编辑:哇!我没想到答案这么快。现在它就像魅力一样发挥作用。一个大的!感谢所有帮助过我的人。

我必须更深入地讨论比较数组矩阵的建议,但你们为我指明了正确的方向。

最佳答案

看来你的想法基本上是正确的。唯一的问题是从循环中提前返回 0。循环时,如果相应的数组元素不相等,则应仅返回 1-1。只有在耗尽整个数组后,您才能断定它们相等,并返回 0:

for (int i = 0; i < arrayLength; i++) {
if (array1[i] > array2[i]) {
return 1;
} else if (array1[i] < array2[i]) {
return -1;
}
// else claus removed here
}
return 0;

编辑:
正如安迪·特纳在评论中提到的,您还应该检查两个数组的长度是否完全相同,而不仅仅是第一个数组不长于第二个数组。将所有这些放在一起:

int isBetterHand(int[] array1, int[]array2) {
i f(array1.length != array2.length) {
// Use != ----^
throw new RuntimeException("isBetterHandgot arrays of different length.");
}
int arrayLength = array1.length;
for (int i = 0; i < arrayLength; i++) {
if (array1[i] > array2[i]) {
return 1;
} else if (array1[i] < array2[i]) {
return -1;
}
// else clause removed here
}
return 0;
}

关于用于比较数组位置的Java函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815664/

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