【问题标题】:How could I exit from do-while loop?我怎样才能退出 do-while 循环?
【发布时间】:2014-04-21 16:51:24
【问题描述】:

我有这些属于 NIM 减法游戏的代码块。我想要实现的是,用户将能够玩游戏,只要他/她愿意。如果用户输入 999 程序将退出,否则用户将一直玩,直到他/她输入 999。这是我的代码块。我不确定我是否犯了逻辑错误,或者我需要添加一些特定的退出代码。感谢您的时间和关注。

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

 int main()
 {

int total, n;
while(true){
cout << "Welcome to NIM. \nEnter 999 to quit the game!\nPick a starting total: ";
cin >> total;
if(total==999)
break;

    while(true){
    //pick best response and print results.
    if ((total % 3) == 2)
    {
        total = total - 2;
        cout << "I am subtracting 2." << endl;
    }
    else
    {
        total--;
        cout << "I am subtracting 1." << endl;
    }
    cout << "New total is " << total << endl;
    if (total == 0)
    {
        cout << "I win!" << endl;
        break;
    }
    // Get user’s response; must be 1 or 2.
    cout << "Enter num to subtract (1 or 2): ";
    cin >> n;
    while (n < 1 || n > 2)
    {
        cout << "Input must be 1 or 2." << endl;
        cout << "Re-enter: ";
        cin >> n;
    }
        total = total - n;
        cout << "New total is " << total << endl;
    if (total == 0)
    {
    cout << "You win!" << endl;
    break;
    }
    }
    }
  return 0;
    }

【问题讨论】:

  • TL;DR; '我怎样才能退出 do-while 循环?' 使用break;return; 甚至exit(); 语句??
  • 表达式'999' 是一个字符文字(甚至是多字符文字,在一些编译器中是扩展),而@987654326 @ 是一个整数变量。任何普通的编译器都会在这种情况下给你很多警告。

标签: c++ exit-code


【解决方案1】:

您正在循环内修改total。只需在开头cin&gt;&gt;total 之后测试total==999break 如果true,即

if(total==999)
    break;

并将do-while 循环替换为while(true){}

【讨论】:

  • 感谢您的宝贵时间。我完全按照您发布的方式添加了 if 循环。它在 if-break 上给出了错误。错误说 break 语句不在循环或 switch 语句中。
  • 如果您在代码顶部的第一个cin &gt;&gt; total 之后立即添加代码,它应该可以工作...您是否将最外面的do-while 循环替换为while(true){ ... }
  • 我在 cin>>total 之后添加了 if-break 循环。我也替换了 do-while 循环
  • 不明白为什么它不起作用,你能再次发布你的整个代码(修改)吗?
  • vsoftco 我只是按照您上面在主要区域中解释的方式添加了代码。请看一下。感谢您的宝贵时间。
【解决方案2】:

在 do-while 循环中,您尝试将字符文字“999”与具有 int 类型的变量 total 进行比较。

}while(total!='999');

虽然此代码有效,但其结果可能与您的预期不同。具有多个符号的字符文字的值是实现定义的。 你必须写

} while ( total != 999 );

此外,如果玩家输入 999,您将开始与他一起玩,尽管您必须退出游戏。

所以我认为最好使用while循环。例如

while ( true )
{  
   cout << "Welcome to NIM. \nEnter 999 to quit the game!\nPick a starting total: ";

   cin >> total;

   if ( total == 999 ) break;

   // ...
}

【讨论】:

  • 我尝试了上面的代码,它有点工作,但是在第一个输入程序开始从头开始重复之后。
  • @Mister T. 我不明白你在说什么。如果您对逻辑不满意,请更改它。有什么问题?!
【解决方案3】:

您必须在代码中进行三处更正才能使其正确

首先您必须检查总数是否等于 999,然后在从用户那里获得总数后中断您的 do 循环

第二 - 你必须在你的第一个 while 循环中放置相同的条件

最后 - 而不是 while(total!='999') 你应该写 while(total!=999) 因为它是整数

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 2022-12-18
    • 2017-02-10
    • 2018-05-14
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2023-02-05
    相关资源
    最近更新 更多