【问题标题】:C++ Do while loop adviceC++ 执行 while 循环建议
【发布时间】:2016-12-16 00:54:05
【问题描述】:

所以在我的大学里,我们还没有介绍 do while 循环,所以我想先尝试一下,但我遇到了一个问题,我希望程序根据用户输入执行不同的功能, A 进行加法,B 进行减法,C 退出程序。
无论用户输入什么内容,我用 do while 编写的程序一个接一个地执行这些功能,我不确定如何让它正常工作。

非常感谢任何建议。

【问题讨论】:

  • 这里的 while 循环比 do...while 循环多,而且所有的 while 循环都几乎没用。你可能想看看 while 循环是如何工作的。
  • do while 不是您使用它的正确方式。它应该用作输入验证。例如:do { cout > 选择 }while(choice != 'A' || 选择!= 'B' || 选择!= C);这会重新询问用户是否输入了不属于菜单的错误选项
  • 最后还有多余的while循环和分号?你只为do-while而不是正常的while循环放分号

标签: while-loop do-while


【解决方案1】:

有几点需要注意。您让用户输入一个字符进行选择,因此将 userChoice 设为一个字符。请注意在这种情况下 do-while 是如何用于输入验证的。我将末尾带有分号的额外 while 循环更改为条件语句。您可以将 if 和 else if 替换为 switch,“菜单驱动程序”。这是您想要的工作程序。如果你想要整个条件语句周围的 do-while 并且不将其用作输入验证,那么将它放在所有条件语句周围并在它不是 C 时进行检查。

#include <iostream>
#include <string>

using namespace std;
int main()
{
  char userChoice;

  int vaulue1;
  int vaulue2;

  int addtionValue;
  int subtractionValue;

  cout << "Choice A: will preform an addition" << endl;
  cout << "Choice B: will preform a subtraction" << endl;
  cout << "Choice C: will quit\n" << endl;


    do
      {
        cout << "Enter your choice\n" << endl;
        cin >> userChoice;
      } while(userChoice != 'A' && userChoice != 'B' && userChoice != 'C');

    if(userChoice == 'A')
      {
        cout << "Addition\n" << endl;
        cout << "Please enter the first value you want to add\n" << endl;
        cin >> vaulue1;
        cout << "Please enter the second value you want to add\n" << endl;
        cin >> vaulue2;

        addtionValue = vaulue1 + vaulue2;
        cout << "The addtion answer is " << addtionValue << endl;
      }

    else if(userChoice == 'B')
      {

        cout << "Subtraction\n" << endl;
        cout << "Please enter the first value you want to subtract\n" << endl;
        cin >> vaulue1;
        cout << "Please enter the second value you want to subtract\n" << endl;
        cin >> vaulue2;

        subtractionValue = vaulue1 - vaulue2;
        cout << "The subtract answer is " << subtractionValue << endl;
      }

    else if(userChoice == 'C')
      {

        cout << "Exit ";
        return -1;
      }

    return 0;
}

【讨论】:

  • 感谢大家帮助我解决这个问题,我似乎对一段时间的目的以及如何正确实施它感到困惑,您的回答有助于清除它。
  • @M.Stran94 如果您认为此答案回答了您的问题,请将此答案标记为已接受,以便其他人也可以使用它!没问题!
【解决方案2】:
  1. 您应该只使用一个“while” - 只有第一个 while 是正确的
  2. 其他“while”是空循环;清理它们
  3. 最好使用“switch - case”

当您输入 A 作为输入时,您的方法想要给 A 另一个

【讨论】: