如果Element不能用于代码

时间:2011-11-08 04:49:20

标签: c++ if-statement

我有一个函数,应该检查数组是否在某个位置包含字母X或O.我这样做是因为如果该元素中不存在X或O,它会将X或O插入该元素中。但由于某种原因它不起作用。如果说X在元素中并且其O转向将其放入其中只是放入O并且不告诉我该移动已经完成。

也许我搞砸了我的设计?

void makeMove()
{
    if ( choosePositionX )
    {
        if (ticTacBoard[choosePositionX - 1] != 'X' || ticTacBoard[choosePositionX - 1] != 'O' )
        {
            ticTacBoard[choosePositionX - 1] = 'X';
        }
        else
            cout << "Player O has already made this move" << endl << endl;
    }


    if ( choosePositionO )
    {
        if (ticTacBoard[choosePositionO - 1] != 'X' || ticTacBoard[choosePositionO - 1] != 'O' )
        {
            ticTacBoard[choosePositionO - 1] = 'O';
        }
        else
            cout << "Player X has already made this move" << endl << endl;
    }
}

2 个答案:

答案 0 :(得分:3)

应该&amp;&amp;&amp;而不是||

因为在这种情况下,if条件将始终返回true。

如果您希望这两个条件都必须为真,那么请使用&amp;&amp;&amp;&#39;但是我想你正在对字面意思采取OR,如果你想要只有一个给定的条件必须是真的,而不是使用下面的表达式

如果你想实现,两者中的任何两个条件都是真的,那么基本上你正在尝试XOR操作,这可以像这样实现

if ((ticTacBoard[choosePositionX - 1] != 'X'  ||  ticTacBoard[choosePositionX - 1] != 'O' )
  && ! (ticTacBoard[choosePositionX - 1] != 'X'  &&  ticTacBoard[choosePositionX - 1] != 'O' ))

上述条件将确保其中只有一个为TRUE。 either X或O

没有测试过这种情况,请原谅任何错误,这是一个想法

答案 1 :(得分:0)

无论它有什么价值,它总是要么不是X而不是O.你检查它是不是-X OR not-O。那个测试永远都是真的。

您想要检查 X还是 O.在这种情况下,已经采取了此举措。变化:

    if (ticTacBoard[choosePositionX - 1] != 'X' || ticTacBoard[choosePositionX - 1] != 'O' )
    {
        ticTacBoard[choosePositionX - 1] = 'X';
    }
    else
        cout << "Player O has already made this move" << endl << endl;

    if (ticTacBoard[choosePositionX - 1] != 'X' && ticTacBoard[choosePositionX - 1] != 'O' )
    {
        ticTacBoard[choosePositionX - 1] = 'X';
    }
    else
        cout << "Player " << ticTacBoard[choosePositionX - 1] << " has already made this move" << endl << endl;

如果玩家成功移动,您需要更改下一个玩家。如果没有,你需要让同一个玩家再试一次。