是什么导致无限循环
What Is Causing Infinite While Loop
我正在创建一个游戏,让两个人玩来猜一个数字,我让它使用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;
}
此外,任何关于如何使我的代码变得更好的反馈都将不胜感激。
有两件事出错
- while循环的大括号
- 您不会在循环中再次读取用户输入
修改循环如下。。
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
}
问题是在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)
如果在while语句后不使用大括号,它只引用以下表达式。
此外,过了一段时间,你就不会再从用户那里读取数据了,那么你希望player2会发生什么变化呢?
就代码组织而言,最好将player2设置为明显无效的值,如-1,并在开头使用while,而不使用之前的read-and-if语句,这样就不必使用特殊大小写。
试试这个。。。
do
{
cout << "Player 2 guess the number between 1 and 100: "; //Asks guess a number
cin >> player2;
} while (player2 != player1)
您的花括号位于错误的位置,并且您在第一次之后从未读取玩家的输入。
如果你这样改变,第二个玩家会被再次询问。
while(player1 != player2){
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
}
此外,您应该添加一些基本的错误处理,例如检查是否设置了cin.error()标志。
您的while
没有括号,这使得它后面的行永远重复!
将player 2 guess
的cout
和cin
放入do-while
循环中,然后验证条件。
cout << "Player 1 type in a number between 1 and 100: "; //Asks player to enter a number
cin >> player1;
system("CLS");
do {
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
} while(player2 != player1);
在中
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
}
循环中的任何内容都不会更改player2
或player1
,因此如果条件player2 != player1
为真,则它将保持为真。
循环
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
}
是一个无休止的循环,因为变量player2和player1在循环内部不会更改。如果while条件在进入循环时为true,则它将永远保持为true。
更新:
为了允许player2重复猜测,从而更改他猜测的数字并退出while循环,请在cout
语句后添加cin >> player2;
:
while(player2 != player1)
{
cout << "Player 2 guess the number between 1 and 100: ";
cin >> player2;
}
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 在C++中,建议通过数组循环的方式是什么?
- 编写按初始值循环的循环的更好方法是什么
- 是什么导致我的循环在第一次迭代中运行得更慢
- 从列表/向量制作嵌套 for 循环的最佳方法是什么?
- <<、>>算子在循环中的作用是什么
- 这个 FOR-IF 循环的解释是什么?
- 这个循环是什么意思:for(j,0,np)
- 这个循环测试条件是什么意思?
- 这是循环做什么C++?tempList[j+1]
- 不知道这个无限循环是从哪里来的
- 而循环比循环更有效.可能是什么原因
- 在 C++ 中直接为 FOR 循环提供的 " ; " 的功能是什么?
- 前循环后的if stategent是什么意思
- 关于循环变量优化的标准合规行为是什么?
- 为循环中多次调用的函数返回值预分配内存的正确方法是什么
- for 循环后的分号是什么意思?为什么第一个循环语句中有 j++
- 确定空无限循环的编译器行为的最佳方法是什么?
- 是什么导致无限循环
- 此摊销公式的适当循环是什么