【发布时间】:2020-04-16 23:13:52
【问题描述】:
我正在尝试让一个简单的井字游戏程序在控制台中运行,以确保我理解循环和数组。
它可以按预期编译和运行,但如果用户输入的不是数字,则程序会无限循环第一个 if 语句,而没有机会添加新的输入。我真的不知道如何解决这个问题。
我认为问题在于 chosenSquare 是一个整数,因为它需要与值进行比较,但 cin 可以接受任何内容。预期的行为是检查输入是否为 0 到 8 之间的整数(板上的 9 个空格),如果没有返回消息并重复,等待新的输入。
有一个简单的解决方法吗?在我了解基础知识的同时,我现在正在尝试避免使用专业包和命名空间。我看过类似的问题,但没有关注。
谢谢。
代码sn-p:
// Input loop
bool valid = false;
while (valid != true)
{
int chosenSquare = 0;
cout << "Player " << currentPlayer << ", enter a number between 1 and 9:" << endl;
cin >> chosenSquare;
chosenSquare--; // For array indexing
if ((chosenSquare < 0) || (chosenSquare > 8)) // <--- PROBLEM IS THIS LOOP
{
cout << "Invalid input. Try again." << endl;
continue;
}
else if ((board[chosenSquare] == currentPlayer) || (board[chosenSquare] == lastPlayer))
{
cout << "Square not availible. Try again." << endl;
continue;
}
else
{
board[chosenSquare] = currentPlayer;
valid = true;
break;
}
}
【问题讨论】:
标签: c++