我对Java很陌生,我刚刚编写了一个TicTacToe程序。我仅用AI成功地创建了它,但是当我尝试添加其他选项来与其他人一起玩时,遇到了一个问题。我试图做到这一点,以便如果周转数(定义为静态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();
}
}
}
}
最佳答案
如果周转计数(定义为静态int)是偶数,它将检查所按按钮的文本是否等于空,如果是,则将其设置为x。否则,它应该检查按钮的文本是否等于零,如果是,则将其设置为O。
否则,如果turncount
为奇数,则需要设置O
。那么您需要额外的一对括号{}
,因为没有它们,else
块实际上将匹配内部的if
块而不是外部的(因此,在文本为""
的相同条件下,由于它们匹配,所以永远不会执行) 。
if (turncount % 2 == 0)
{
if (topl.getText().equals(""))
{
topl.setText("X");
turncount += 1;
winchecker();
}
} // ADDED
else
{ // ADDED
if (topl.getText().equals(""))
{
topl.setText("O");
turncount += 1;
winchecker();
}
}