java - 如何在 Java 中分别比较两个 int 数组元素并查看哪个元素更大?
问题描述
所以我必须制作一个游戏,分别比较两个 int 数组元素,看看一个是否大于另一个,或者它们是否相等,并打印一条消息,声明哪个玩家获胜或是否平局。两位玩家都获得了 7 张牌,因此他们必须在不同的回合中分别进行 7 次比较。在比较每个数字时我被卡住了,我似乎无法让它工作,而且我真的不知道如何做到这一点,所以每次迭代都宣布新一轮必须单独完成 7 次?这是我经过多次尝试后目前所拥有的。任何帮助将不胜感激!
public class Exercise1 {
public static void main(String[] args) {
int[] playerOne = new int[6];
int[] playerTwo = new int [6];
playerOne[0] = 10;
playerOne[1] = 6;
playerOne[2] = 8;
playerOne[3] = 9;
playerOne[4] = 7;
playerOne[5] = 12;
playerOne[6] = 7;
playerTwo[0] = 7;
playerTwo[1] = 6;
playerTwo[2] = 9;
playerTwo[3] = 5;
playerTwo[4] = 2;
playerTwo[5] = 8;
playerTwo[6] = 11;
for (int i = 0; i <= playerOne.length - 1; i++) {
if (playerOne[i] < playerTwo) {
}
解决方案
看起来您想将相同索引处的元素相互比较,因此您的代码几乎是好的:
- 比较
playerOne[i]
并playerTwo[i]
做任何适当的事情(例如计算分数) - 请记住,最大索引由较短的数组定义,因此请确保它们具有相同的长度或使用
i < Math.min(playerOne.length, playerTwo.length)
.
但是,重新考虑您的方法可能会更好(尽管这可能是以后的练习):与其维护 2 个单独的“圆形”分数数组,不如尝试通过引入一个RoundResults
类(或类似的)并将其合并为一个,最好使用一个列表(具有动态长度)。
示例(简化):
class RoundResult {
private int playerOneScore;
private int playerTwoScore;
//constructor, getters and setters
}
List<RoundResult> rounds = new ArrayList<>();
rounds.add(new RoundResult(10, 7));
rounds.add(new RoundResult(6, 6));
...
for(RoundResult round : rounds) {
if( round.getPlayerOneScore() < round.getPlayerTwoScore() ) {
//player 2 won that round
} else if( round.getPlayerOneScore() > round.getPlayerTwoScore() ) {
//player 1 won that round
} else {
//it was a draw
}
}
这样做有几个优点:
- 使用列表不需要在编译时知道回合数(例如,当您想要继续直到一个玩家比另一个玩家赢得至少 2 个回合且最少 x 时)
- 您只有一个列表,因此您不必确保 2 个数组或列表具有相同的大小和顺序
- 你甚至可以添加方法来
RoundResult
喜欢boolean isDraw() { ... }
推荐阅读
- kotlin - 使用 Kotlin 中第一个列表的值对两个列表字符串进行排序
- testing - SAPUI5 OPA5 测试。Diff 被抑制,因为预期和实际结果具有等效的序列化
- python - 使用掩码仅在某些行上合并两个数据帧
- android - 在画中画模式下播放 Youtube 视频
- python - conda envs 令人困惑的工作流程问题
- flutter - Flutter FutureBuilder – 当小部件在异步函数中构建时,进度指示器不显示
- angular - 如何格式化 Observable 中的日期?
- prometheus - 显示平均响应时间 promethues/graphana
- python - 如何抓取隐藏在按钮后面的 CSV 文件?
- litespeed - Litespeed 没有优化我的所有图片