C++ Can';我不能让它回到回路。C++;

C++ Can';我不能让它回到回路。C++;,c++,c++11,C++,C++11,如果他们输入了选项中的任何内容,我试图让它返回到循环中。每次我输入4,它就结束了。如果我选对了,它也会结束。是否有我可以让它要求用户输入正确的一个 void towsoncourse () { cout << "Enter Course: 1 is COSC,2 is ENGL,3 is MATH" << endl; int course; bool finish; bool finishcourse = true; cin &g

如果他们输入了选项中的任何内容,我试图让它返回到循环中。每次我输入4,它就结束了。如果我选对了,它也会结束。是否有我可以让它要求用户输入正确的一个

void towsoncourse ()
{
    cout << "Enter Course: 1 is COSC,2 is ENGL,3 is MATH" << endl;
    int course;
    bool finish;

    bool finishcourse = true;
    cin >> course;

    while (finishcourse != true)
    {
        cout << "Enter correct number for course" << endl;
        if (course == 1 || course == 2 | course == 3)
        {
            finish = true;
        }
        else
        {
            cout<< "Error: Enter number corresponding to course." << endl;
        }
     }

     switch (course)
     {
        case 1:
            cout << "COSC" << endl;
            break;
        case 2:
            cout << "ENGL" << endl;
            break;
        case 3:
            cout << "MATH" << endl;
            break;
        default:
            cout << "Error: Enter number corresponding to course" << endl;
    }
}

int main ()
{
  towsoncourse ();

  return 0;
}
void towsoncourse()
{
cout课程;
while(finishcourse!=真)
{

cout不是一个完整的答案,而是一个指引方向的指南

您希望一直读取输入,直到它是3个可能值之一。因此,读取和测试输入的好地方应该在循环中,只有在满足测试条件时才退出


while loops在每次执行之前测试continue条件。在每次执行之后执行loops测试continue条件。在您的情况下,必须至少执行一次。

代码存在一些问题

1)
while(finishcourse!=true)
条件错误。它应该是
while(finishcourse==true)

2)
finish=true;
作业错误。它应该是
finishcourse=false;

3)
cin>>当然;
应该在循环内部进行。因为如果将其放置在外部,如果输入不正确,将导致无限循环

因此,为了确保可读性,我重写了代码。我假设如果输入不正确,它会返回循环,如果输入正确,它会终止

#include <iostream>

using namespace std;

void towsoncourse ()
{
    bool finishcourse = true;

    while (finishcourse == true)
    {
        int course;
        cout << "Enter Course: 1 is COSC,2 is ENGL,3 is MATH" << endl;
        cin >> course;

        switch (course)
         {
            case 1:
                cout << "COSC" << endl;
                finishcourse = false;
                break;
            case 2:
                cout << "ENGL" << endl;
                finishcourse = false;
                break;
            case 3:
                cout << "MATH" << endl;
                finishcourse = false;
                break;
            default:
                cout << "Error: Enter number corresponding to course." << endl;
        }
     }
}

int main ()
{
  towsoncourse ();

  return 0;
}
#包括
使用名称空间std;
无效towsoncourse()
{
bool finishcourse=true;
while(finishcourse==true)
{
国际课程;
cout课程;
转换(课程)
{
案例1:

拼写错误:
if(course==1 | | course==2 | course==3)
可能应该是
if(course==1 | | course==2 | | course==3)
或者你正在做一些非常微妙的事情,可能需要一些括号。因此,你将
完成课程
初始化为
正确的
,然后立即尝试做一些
,而
完成课程
不是
正确的
。这对你来说有意义吗?这就像把你的晚餐放进烤箱,而不是只要烤箱里没有东西,就计划做某事。不计算。注意:一个像样的编译器设置为像样的警告级别会告诉你,
bool finish;
已设置但从未使用过。永远不要忽略编译器警告。它们存在是有原因的。找出它的含义并解决它。你几乎总是需要搜索更少的bugs。@user4581301同意,我的错误!谢谢Kunal,这是我第一年做编码,需要另一双眼睛来了解我做错了什么。谢谢你的提示。@KumaHurricane,如果你真的认为这回答了你的问题,请将此解决方案标记为已批准。