我正在为两个人创建一个游戏来猜测一个数字,我让它使用if语句,但如果玩家2弄错了我希望他们能够再次猜测,直到他们做对了。我决定使用while循环,但我得到一个无限循环的文本,我该怎么做才能阻止它?
这是我的代码:(我在处理while循环时注释掉了if语句)
#include <iostream>
using namespace std;
int main() {
int player1; //Number variable 1
int player2; //Number variable 2
cout << "Player 1 type in a number between 1 and 100: "; //Asks player to enter a number
cin >> player1;
system("CLS");
cout << "Player 2 guess the number between 1 and 100: "; //Asks guess a number
cin >> player2;
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
}
system("pause");
system("pause"); //Keeps window on screen
return 0;
}
此外,任何有关如何使我的代码更好的反馈都将受到高度赞赏。
答案 0 :(得分:2)
你错了两件事
修改循环如下..
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
}
答案 1 :(得分:1)
如果在while语句后不使用open大括号,则只引用以下表达式。
此外,一段时间后你再也没有从用户那里读取数据了,那么你怎么看待player2改变呢?
在代码组织方面,最好将player2设置为显然无效的东西,比如-1,并且在开头有while,没有先前的read和if语句,所以它不必是特殊的。
答案 2 :(得分:1)
问题是,在while
循环中,您永远不会更改player1
或player2
的值。因此,如果他们第一次不平等,他们将永远不平等,代码将无限循环。要解决此问题,您需要将更改值的代码移动到循环体中。因此,用户有机会更改值。
do {
cout << "Player 2 guess the number between 1 and 100: "; //Asks guess a number
cin >> player2;
if (player2 == player1)
cout << "Correct!" << endl;
else
cout << "Wrong, try again" << endl;
} while(player2 != player1)
答案 3 :(得分:1)
您的while
没有括号,这使得该行在永久重复之后就行了!
将cout
的{{1}}和cin
放入player 2 guess
循环中,然后验证条件。
do-while
答案 4 :(得分:1)
试试这个......
do
{
cout << "Player 2 guess the number between 1 and 100: "; //Asks guess a number
cin >> player2;
} while (player2 != player1)
答案 5 :(得分:1)
你的大括号位置错误,你从未在第一次看到玩家的输入。
如果你这样更改,将再次询问第二位玩家。
...
while(player1 != player2){
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
}
此外,您应该添加一些基本的错误处理,例如检查是否设置了cin.error()标志。
答案 6 :(得分:0)
循环
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
}
是一个无限循环,因为变量player2和player1在循环内部没有改变。如果进入循环时while条件为真,它将永远保持为真。
更新:
要允许player2重复猜测,从而更改他猜测并退出while循环的数字,请在cin >> player2;
语句后添加cout
:
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
}
答案 7 :(得分:0)
在
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
}
循环中的任何内容都不会更改player2
或player1
,因此如果条件player2 != player1
为真,则它将保持为真。