【问题标题】:Compare 3 elements in a single-dimensional array [closed]比较一维数组中的 3 个元素 [关闭]
【发布时间】:2012-02-25 19:27:12
【问题描述】:

如何检查一维数组的 3 个元素是否等于特定值?

背景:我正在尝试检查井字游戏(noughts and crosss)的获胜者。换句话说,检查 3x3 网格中是否有任何线被展平为一维数组。

这是我尝试过的代码:

尝试 1:

switch ()
{
    case board[(6&3&0) || (7&4&1)]: case board[7&4&1]: case board[8&5&2]: case board[0&1&2]: case board[3&4&5]: case board[6&7&8]: case board[6&4&2]: case board[8&4&0]:
    System.out.println("Equal to x")
    break;
}

尝试 2:

if (board[7] , board[4] , board[1] == 'X')
system.out.println("Equal");

尝试 3:

if ( board[6&3&0] == 'X'  || board[7&4&1] == 'X' || board[8&5&2] == 'X' || board[0&1&2] == 'X' || board[3&4&5] == 'X' || board[6&7&8] == 'X' || board[6&4&2] == 'X' || board[8&4&0] == 'X') {
    System.out.println("Equal to x");
}else if
( board[6&3&0] == 'O'  || board[7&4&1] == 'O' || board[8&5&2] == 'O' || board[0&1&2] == 'O' || board[3&4&5] == 'O' || board[6&7&8] == 'X' || board[6&4&2] == 'O' || board[8&4&0] == 'O'){
    System.out.println("Equal to o!");
}

【问题讨论】:

  • 天哪,这是什么?
  • 学习java语法,然后请教一个问题。使用 3d 数组。 board[1][2][3] 有效,但 board[1&2&3] 无效。
  • 赋值的标准是一维数组,这就是我卡住的原因。
  • FlopCoder 如果给 board[0] 任何输入,它会自动宣布获胜。
  • 我也想过将数组变成一个列表并比较 3 个 X 或 O,但这是我最后的手段,我知道有一种更简单的方法来比较两个以上的元素

标签: java arrays compare


【解决方案1】:

您的井字游戏“比赛场地”如下所示:

0 1 2
3 4 5
6 7 8

0-8 是 char[] 数组中的索引:

marks = new char[9];

检查我们是否连续三个“x”:

'x' == marks[0] == marks[3] == marks[6] // a vertical row
'x' == marks[0] == marks[1] == marks[2] // a horizontal row
'x' == marks[0] == marks[4] == marks[8] // a diagonal row

这应该让你开始。

编辑:这将编译:

boolean win = marks[0] == 'x' && marks[3] == 'x' && marks[6] == 'x';

【讨论】:

  • 我尝试了多种组合,例如: if ('X' == board[7] == board[4] == board[1]) System.out.println("IT WORKS! ");无济于事。
  • 我的示例 'x' == marks[0] == marks[3] == marks[6] 不是有效的 Java。我会更新我的答案...
  • 好的,我明白了,在我在内部使用普通 & 之前,但是您将整个语句转换为布尔值,所以 && 可以代替!完美,我有类似的,但使用的是单个 &。太棒了,非常感谢
【解决方案2】:

您的电路板可能有一个二维数组:

board = new char[3][3]

您想知道是否可以将其映射到单个维度。答案是肯定的。只需在脑海中编号:

012
345
678

声明

board = new char[9]

并在您的代码中使用这些索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多