1

私の関数では、if ステートメントを追加して、ユーザーが正しい座標を入力し続けるようにしました。最初の if ステートメントが false の場合、無限ループが発生します。最初の if ステートメントが正しく、2 番目の if ステートメントが false の場合、完全に正常に動作します。

void Sheep::sheepProcess(BoardSet& board)
{
    char middle;

    cout << "Your move? ";
    cin >> x1 >> y1 >> middle >> x2 >> y2;
    if (correctInput(x1, y1, x2, y2))
    {
        convertCoordinates(x1, y1, x2, y2); //x=z and y=w

        if(board.legalMoveForSheep(z1, w1, z2, w2))
        {
            board.adjustBoardForSheep(z1, w1, z2, w2);

        }
        else
        {
            cout << "Illegal Move, Try again" << endl;
            sheepProcess(board);

        }

    }
    else
    {
        cout << "Illegal input, Try again" << endl;
        sheepProcess(board);
    }

}

ブールなどのコードがさらに必要な場合。お知らせ下さい

編集:

class Sheep {
public:

    void sheepProcess(BoardSet& board);
    void convertCoordinates(char x1, int y1, char x2, int y2);
    void initalizedItems();


private:
    char x1, x2;
    int y1, y2, z1, z2, w1, w2;
};
4

1 に答える 1

0

準備ができている入力を食べていませんcin。次の読み取りでもまったく同じ入力が得られますが、これも失敗します。吐き気を繰り返します。

解決策: 有効でない入力が準備されていることを検出した場合は、それを食べて捨て、不適切な入力を提供したことについてユーザーに不平を言い、ユーザーが再試行できるようにします。

于 2013-04-09T06:23:28.467 に答える