Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查完整列?_Java - Fatal编程技术网

Java 如何检查完整列?

Java 如何检查完整列?,java,Java,我正在构建一个连接四的游戏,这是我的棋盘格: static final int ROWS = 6; public void checkIfFull(int colu) { /*deleted*/ } 当用户单击按钮时,将调用此选项: if (e.getSource () == b1) { checkIfFull (0); } 这是我将令牌定位在最低开放级别的方法: public void setPos(int column) {

我正在构建一个连接四的游戏,这是我的棋盘格:

 static final int ROWS = 6;

    public void checkIfFull(int colu)
{
    /*deleted*/
}
当用户单击按钮时,将调用此选项:

if (e.getSource () == b1)
    {
        checkIfFull (0);


    }
这是我将令牌定位在最低开放级别的方法:

    public void setPos(int column)
{
    if (demise) return; //this is for when the game is already over and the user
still attempts to click on a button

    int row;
    for (row = 0; row < ROWS; ++row)
    {
        if (slots[row][column] > 0)
            break;
    }

    if (row > 0)
    {
        //save current player
        slots[--row][column] = active;
        //change turns
        /*if (active == GREEN)
        {
            active = RED;
            activeMe ();
        }
        else if (active == RED)
        {
            active = GREEN;
            activeMe();
        } I moved this to setCircle method*/

        setCircle(active, row, column); //gui method used to fill up the empty circle
    }


}
public void setPos(int列)
{
if(diseat)return;//这是用于游戏已经结束并且用户
仍然尝试单击按钮
int行;
用于(行=0;行<行;++行)
{
如果(插槽[行][列]>0)
打破
}
如果(行>0)
{
//保存当前播放器
插槽[--行][列]=活动;
//换车
/*如果(活动==绿色)
{
活动=红色;
activeMe();
}
else if(活动==红色)
{
活动=绿色;
activeMe();
}我把这个移到了setCircle方法*/
setCircle(活动、行、列);//用于填充空圆圈的gui方法
}
}
当我填写一个专栏时,Joptionpane不会弹出,但它应该会弹出

有什么线索吗


我仍在不断地研究我的逻辑,因此,如果你能看到其他缺陷,请指出它们。:)

您应该检查
计数器
是否等于6,因为您已声明:

static final int ROWS = 6;
因此,您必须检查以下内容:

if (counter == ROWS) // not 5
请注意,您是在与
进行比较,而不是直接与
6
进行比较,以避免出现错误

另外,在使用计数器之前,不要忘记声明和初始化它:

int counter = 0;

Stackoverflow更多用于具体问题。你遇到了什么问题?您是否收到错误(如果收到,请发布堆栈跟踪)?你是否观察到意外行为,如果是,是什么,期望的行为是什么?@Teeg对不起,应该更具体一点。此时,joptionpane应该在列已满时弹出,但它没有t@HovercraftFullOfEels是的,很好,谢谢。这不是错误的原因,但我可以肯定地说,
publicstaticvoidsetpos(int列)
不应声明为静态。如果您这样做是为了防止编译错误,那么您修复的是错误的。此外,您不应该为JOptionPane创建新的JFrame,而应该使用当前显示的GUI中的组件来实现这一点。这是有道理的,但是循环从0开始?所以5最终是最大值?是的,但是从0到5,有6个数字。虽然我的循环中的条件是
row
,因此工作方式类似于5<6,然后循环在更新时中断,row=6?最后检查的条件是:
6
,这是
false
,因此循环结束。为什么是静态的?如果您只打算使用
计数器
执行此特定任务,请将其设置为局部变量。