重新打印选项列表

时间:2015-10-05 14:26:50

标签: c++ loops for-loop while-loop break

我正在学习c ++,目前正在研究“跳入c ++”一书中的练习题。

我当前的问题是我正在尝试创建一个列表,让用户选择一个选项,如果输入不是其中一个选项,则重新打印列表。

我已经达到了用户可以从其中一个选项中选择并且程序将继续进行的程度,但是如果用户输入不是其中一个选项,我就无法重新打印列表。

{
   string option;


   while (true)
    {
    cout << "Please select and option from the following:" << '\n';
    cout << "Fish" << '\n' << "Chips" << '\n' << "Peas" << '\n';
    cin >> option;
    {
        if (option == "Fish" || option == "chips" || option == "Peas")
        {
            cout << "Thank you, you have chosen " << option << '\n';
        }
        break;
        cout << "Please choose again" << '\n';
    }

  }

}

我希望你能看到我在这里想要实现的目标。我是一个大型的菜鸟,所以这真的超出了我的舒适范围,但是对你们中的一些人来说很简单。

提前感谢任何建议。

尔杰斯。

3 个答案:

答案 0 :(得分:2)

break;命令退出当前循环。您当前的代码无条件地执行它,这可能不是您想要的。将其移动到if

控制的块中
while (true)
{
  cout << "Please select and option from the following:" << '\n';
  cout << "Fish" << '\n' << "Chips" << '\n' << "Peas" << '\n';
  cin >> option;
  {
    if (option == "Fish" || option == "chips" || option == "Peas")
    {
      cout << "Thank you, you have chosen " << option << '\n';
      break;
    }
    cout << "Please choose again" << '\n';
  }
}

我还建议你摆脱嵌套的大括号块,它对程序执行没有任何作用(你甚至没有任何嵌套变量):

while (true)
{
  cout << "Please select and option from the following:" << '\n';
  cout << "Fish" << '\n' << "Chips" << '\n' << "Peas" << '\n';
  cin >> option;
  if (option == "Fish" || option == "chips" || option == "Peas")
  {
    cout << "Thank you, you have chosen " << option << '\n';
    break;
  }
  cout << "Please choose again" << '\n';
}

通过逐步调试调试器中的代码,通常可以快速解决诸如此类的问题。对于任何程序员来说,这都是必备技能,你应该尽快学习。

答案 1 :(得分:0)

无论条件如何,您都会发出break

答案 2 :(得分:0)

break;需要在if语句中。否则你总是在结束你的while循环。