Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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 JButton操作中的if语句问题_Java_Swing_If Statement_Jframe_Actionlistener - Fatal编程技术网

Java JButton操作中的if语句问题

Java JButton操作中的if语句问题,java,swing,if-statement,jframe,actionlistener,Java,Swing,If Statement,Jframe,Actionlistener,我对java相当陌生,我刚刚制作了一个TictaToe程序。我成功地用人工智能创建了它,但当我试图添加一个额外的选项来与另一个人玩时,我遇到了一个问题。我试图使它,如果turncount(定义为静态int)是一个偶数,它将检查按下按钮的文本是否等于零,如果是这样设置为x。否则,它应该检查被按下按钮的文本是否等于零,如果是,则将其设置为O。无论出于何种原因,它似乎不会检查else语句。下面的代码非常重复,所以您只需要阅读前12行左右的内容就可以了解我的意思。谢谢你的帮助 操作侦听器方法: publ

我对java相当陌生,我刚刚制作了一个TictaToe程序。我成功地用人工智能创建了它,但当我试图添加一个额外的选项来与另一个人玩时,我遇到了一个问题。我试图使它,如果turncount(定义为静态int)是一个偶数,它将检查按下按钮的文本是否等于零,如果是这样设置为x。否则,它应该检查被按下按钮的文本是否等于零,如果是,则将其设置为O。无论出于何种原因,它似乎不会检查else语句。下面的代码非常重复,所以您只需要阅读前12行左右的内容就可以了解我的意思。谢谢你的帮助

操作侦听器方法:

public void actionPerformed(ActionEvent e) {
        if (e.getSource() == topl)
            if (turncount % 2 == 0)
            {
                if (topl.getText().equals(""))
                {
                    topl.setText("X");
                    turncount  += 1;
                    winchecker();

                }
            else
                if (topl.getText().equals(""))
                {
                    topl.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        if (e.getSource() == midup)
        {
            if (turncount % 2 == 0)
            {
            if (midup.getText().equals(""))
            {
                midup.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (midup.getText().equals(""))
                {
                    midup.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        }
        if (e.getSource() == topr)
        {
            if (turncount % 2 == 0)
            {
            if (topr.getText().equals(""))
            {
                topr.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (topr.getText().equals(""))
                {
                    topr.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        }
        if (e.getSource() == midl)
        {
            if (turncount % 2 == 0)
            {
            if (midl.getText().equals(""))
            {
                midl.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (midl.getText().equals(""))
                {
                    midl.setText("O");
                    turncount  += 1;
                    winchecker();
                }
            }
        }
        if (e.getSource() == mid)
        {
            if (turncount % 2 == 0)
            {
            if (mid.getText().equals(""))
            {
                mid.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (mid.getText().equals(""))
                {
                    mid.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }           }
        if (e.getSource() == midr)
        {
            if (turncount % 2 == 0)
            {
            if (midr.getText().equals(""))
            {
                midr.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (midr.getText().equals(""))
                {
                    midr.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        }
        if (e.getSource() == botl)
        {
            if (turncount % 2 == 0)
            {
            if (botl.getText().equals(""))
            {
                botl.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (botl.getText().equals(""))
                {
                    botl.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        }
        if (e.getSource() == midlow)
        {
            if (turncount % 2 == 0)
            {
            if (midlow.getText().equals(""))
            {
                midlow.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (midlow.getText().equals(""))
                {
                    midlow.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        }
        if (e.getSource() == botr)
        {
            if (turncount % 2 == 0)
            {
            if (botr.getText().equals(""))
            {
                botr.setText("X");
                turncount  += 1;
                winchecker();

            }
            else
                if (botr.getText().equals(""))
                {
                    botr.setText("O");
                    turncount  += 1;
                    winchecker();

                }
            }
        }
    }

你的else语句属于内部if语句,而不是你想要的外部if语句。您当前的代码本质上是一个大的if块,它测试topl.getText().equals(“”)是否两次,这是没有意义的。所以你有这个:

        if (turncount % 2 == 0)
        {
            if (topl.getText().equals(""))
            {
                topl.setText("X");
                turncount  += 1;
                winchecker();

            }
        else 
            if (topl.getText().equals(""))
            {
                topl.setText("O");
                turncount  += 1;
                winchecker();

            }
        }
您应该将其更改为以下内容:

        if (turncount % 2 == 0)
        {
            if (topl.getText().equals(""))
            {
                topl.setText("X");
                turncount  += 1;
                winchecker();

            }
        }
        else {
            if (topl.getText().equals(""))
            {
                topl.setText("O");
                turncount  += 1;
                winchecker();

            }
        }

你的else语句属于内部if语句,而不是你想要的外部if语句。您当前的代码本质上是一个大的if块,它测试topl.getText().equals(“”)是否两次,这是没有意义的。所以你有这个:

        if (turncount % 2 == 0)
        {
            if (topl.getText().equals(""))
            {
                topl.setText("X");
                turncount  += 1;
                winchecker();

            }
        else 
            if (topl.getText().equals(""))
            {
                topl.setText("O");
                turncount  += 1;
                winchecker();

            }
        }
您应该将其更改为以下内容:

        if (turncount % 2 == 0)
        {
            if (topl.getText().equals(""))
            {
                topl.setText("X");
                turncount  += 1;
                winchecker();

            }
        }
        else {
            if (topl.getText().equals(""))
            {
                topl.setText("O");
                turncount  += 1;
                winchecker();

            }
        }
如果turncount(定义为静态整数)是偶数,它将检查按下按钮的文本是否等于零,如果是,则将其设置为x。否则,它应该检查被按下按钮的文本是否等于零,如果是,则将其设置为O

如果您的意思不是这样,那么如果
周转次数
为奇数,则需要设置
O
;然后您需要一对额外的大括号,因为如果没有大括号,
{}
,则
否则
块实际上会匹配内部的
,如果
块不是外部的(因此永远不会执行,因为它们匹配的条件与文本是
)相同)

如果turncount(定义为静态整数)是偶数,它将检查按下按钮的文本是否等于零,如果是,则将其设置为x。否则,它应该检查被按下按钮的文本是否等于零,如果是,则将其设置为O

如果您的意思不是这样,那么如果
周转次数
为奇数,则需要设置
O
;然后您需要一对额外的大括号,因为如果没有大括号,
{}
,则
否则
块实际上会匹配内部的
,如果
块不是外部的(因此永远不会执行,因为它们匹配的条件与文本是
)相同)


感谢您快速、有益的回复。“我会提高投票率,但我还没有15%的声望。”EyedJellyfish,没关系。您仍然可以通过单击向上投票按钮下方的绿色复选标记来接受此答案。如果你愿意的话,就拿这个吧。欢迎访问SO。感谢您快速、有益的回复。“我会提高投票率,但我还没有15%的声望。”EyedJellyfish,没关系。您仍然可以通过单击向上投票按钮下方的绿色复选标记来接受此答案。如果你愿意的话,就拿这个吧。欢迎访问SO。感谢您快速、有益的回复。我会投票,但我还没有15岁的名声。@EyedJellyfish不必担心+1代表您。:)感谢您快速、有益的回复。我会投票,但我还没有15岁的名声。@EyedJellyfish不必担心+1代表您。:)