JavaConnect4游戏。我想检查一下这一栏是否满了

JavaConnect4游戏。我想检查一下这一栏是否满了,java,Java,我试图检查玩家想要放置硬币的栏是否已满。当我把柱子放满的时候,我把另一枚硬币放在那里,它就出界了。我怎样才能检查它是否满了,并且没有出界 for(int o=rows-1;o>=0;o--){ if(板[o][nextColumn]==“-”){ 单板[o][nextColumn]=nextSymbol+“”; 打破 } 如果(完整列>行){ System.out.println(“列已满!”); 打破 } } 您将获得IndexOutOfBoundsException,因为初始化循环时,g的值

我试图检查玩家想要放置硬币的栏是否已满。当我把柱子放满的时候,我把另一枚硬币放在那里,它就出界了。我怎样才能检查它是否满了,并且没有出界

for(int o=rows-1;o>=0;o--){
if(板[o][nextColumn]==“-”){
单板[o][nextColumn]=nextSymbol+“”;
打破
}
如果(完整列>行){
System.out.println(“列已满!”);
打破
}
}

您将获得IndexOutOfBoundsException,因为初始化循环时,
g
的值为0

for(int g=0;g<rows;g++)
如果
g
的值从零开始,则
g-1
的值为-1,这会产生错误,因为根据定义,数组从索引0开始

当你检查你的对角线时,你不能只用一种方法来检查——对角线是有方向的。不考虑方向性是导致测试失败的原因

拿一张纸画你的黑板

Diagonal 1

3 - - - o
2 - - o -
1 - o - -
0 o - - -
  0 1 2 3

Diagonal 2

3 o - - -
2 - o - -
1 - - o -
0 - - - o
  0 1 2 3
在对角线1的情况下,您需要同时增加
g
s
,但是因为我们知道第一条对角线上的每个点
g==s
,所以我们只需要一个变量

for(int g = 0; g < 4;g++)
{
    if(boards[g][g].equals(boards[g + 1][g + 1]))
    {
        // still matching. I have no idea how your code is tracking
        // matches, so you'll have to adapt this on your own
    }
    else
    {
        // no match, no need to continue the loop
        // break; or exit however you want
    }
}

无论什么时候,当你不能把你的头脑集中在某件事情上时,画一张图并在纸上画出来,直到你明白你在处理什么。

你会得到IndexOutOfBoundsException,因为当你初始化循环时,
g
的值是0

for(int g=0;g<rows;g++)
如果
g
的值从零开始,则
g-1
的值为-1,这会产生错误,因为根据定义,数组从索引0开始

当你检查你的对角线时,你不能只用一种方法来检查——对角线是有方向的。不考虑方向性是导致测试失败的原因

拿一张纸画你的黑板

Diagonal 1

3 - - - o
2 - - o -
1 - o - -
0 o - - -
  0 1 2 3

Diagonal 2

3 o - - -
2 - o - -
1 - - o -
0 - - - o
  0 1 2 3
在对角线1的情况下,您需要同时增加
g
s
,但是因为我们知道第一条对角线上的每个点
g==s
,所以我们只需要一个变量

for(int g = 0; g < 4;g++)
{
    if(boards[g][g].equals(boards[g + 1][g + 1]))
    {
        // still matching. I have no idea how your code is tracking
        // matches, so you'll have to adapt this on your own
    }
    else
    {
        // no match, no need to continue the loop
        // break; or exit however you want
    }
}

无论什么时候,当你不能把你的头脑集中在某件事情上时,画一幅画,然后在纸上画出来,直到你明白你在处理什么。

你能提供一个。。。因此,发布完整的代码作为对失败原因的即时猜测。然而,您使用的是
boards[o][nextColumn]=“-”
,这是一个
字符串
身份比较
“-”.equals(boards[o][nextColumn])
是您想要的(
=
检查它们是否是
字符串的相同实例,它们可能不是)。这是否回答了您的问题?我改了。同样的问题依然存在。我的代码是350行。它说:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:索引-1超出main.main(main.java:344)处长度6的界限,其中int行344行我有对角线检查是否有赢家(int g=0;ge.g.您循环g从0开始…现在在boards[g-1][s+1])当g为0时会出现错误,因为您试图在boars[-1][s+1]处访问元素。。。和-1不是有效的索引。请提供。。。因此,发布完整的代码作为对失败原因的即时猜测。然而,您使用的是
boards[o][nextColumn]=“-”
,这是一个
字符串
身份比较
“-”.equals(boards[o][nextColumn])
是您想要的(
=
检查它们是否是
字符串的相同实例,它们可能不是)。这是否回答了您的问题?我改了。同样的问题依然存在。我的代码是350行。它说:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:索引-1超出main.main(main.java:344)处长度6的界限,其中int行344行我有对角线检查是否有赢家(int g=0;ge.g.您循环g从0开始…现在在boards[g-1][s+1])当g为0时会出现错误,因为您试图在boars[-1][s+1]处访问元素。。。和-1不是有效的索引