什么是无限循环

时间:2013-12-17 18:45:02

标签: c++ 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;
}

此外,任何有关如何使我的代码更好的反馈都将受到高度赞赏。

8 个答案:

答案 0 :(得分:2)

你错了两件事

  1. while循环的大括号。
  2. 您没有在循环中再次阅读用户输入。
  3. 修改循环如下..

        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循环中,您永远不会更改player1player2的值。因此,如果他们第一次不平等,他们将永远不平等,代码将无限循环。要解决此问题,您需要将更改值的代码移动到循环体中。因此,用户有机会更改值。

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: ";
}

循环中的任何内容都不会更改player2player1,因此如果条件player2 != player1为真,则它将保持为真。