【问题标题】:How to repeat program if user says they want to play again?如果用户说他们想再次播放,如何重复节目?
【发布时间】:2021-02-10 00:33:13
【问题描述】:

我创建了一个询问鞋码的程序。如果鞋码正确,用户会收到一条消息,“你是对的,你想再试一次吗?”他们可以回答是或否。如果他们选择“否”,程序将中断,他们会收到另一条消息,“感谢您的参与!”

如果用户输入yes而不是no作为答案,有没有办法强制程序重新进入while循环?

#include <iostream>
#include <string>
using namespace std;

int main()
{

    int shoesize = 13;
    int input;
    string answer;

    while (input != shoesize) {
        cout << "Guess my shoe size!";
        cin >> input;

        if (input == shoesize) {
            cout << "You are correct! Thanks for Playing! Would you like to play again? \n";
            cin >> answer;

            if (answer == "no") {
                cout << "Thank you for playing!";
            }
        }
    }
    return 0;
}

【问题讨论】:

  • 您从错误的角度处理问题。当用户输入yes 时,您不需要“重新进入”循环。如果用户输入no,您需要break 退出循环
  • 无法进入循环。最好不要一开始就离开循环。
  • 它已经做到了。只有这样,它才会检查是否input != shoesize,这仍然是错误的,因为它仍然在input 中拥有来自用户的最后一个答案。
  • @user4581301 好吧,从技术上讲这是可行的,但我会因为提到goto 而被钉死在十字架上,所以我们可以选择“不可行”。
  • while (input != shoesize) { 是当前代码中的一个错误,因为在第一次命中此代码时,input 尚未初始化。

标签: c++ loops while-loop


【解决方案1】:

编写“不断重复直到你想退出”的最好方法就是这样做:

while(true) {
  .. do something ..
  .. ask "do you want to quit" ..
  if (answer == "yes") {
    break;
  }
}

程序员会立即识别出while(true){}"endless" 循环,并寻找break 语句——顾名思义,它“跳出”最里面的循环,结束“无尽的”循环。这种设计的一个好处是您可以根据需要在循环中的多个位置使用break 语句。 (函数内也可以return。)

【讨论】:

    【解决方案2】:

    这个怎么样。

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    
        int shoesize = 13;
        string answer;
        int input = 0;
    
        while (input != shoesize && answer != "no") {
            cout << "Guess my shoe size!";
            cin >> input;
    
            if (input == shoesize) {
                cout << "You are correct! Thanks for Playing! Would you like to play again? \n";
                cin >> answer;
    
                if (answer == "no") {
                    cout << "Thank you for playing!";
                    return 0;
                }
            }
        }
    }
    

    【讨论】:

    • 这与将大部分函数包装在另一个 while 循环中没有什么不同。不是提问者想要的,我害怕。
    猜你喜欢
    • 2017-01-30
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多