C ++无限循环

时间:2016-09-26 23:11:26

标签: c++ loops

我有一个问题,我的程序只是无限循环。 在控制台“Ne”或“Ja”中写作后

//用英语翻译Ne是No,Ja是Yes。

//在写Ne之后,我想要退出程序。如果我写Ja,我会再次回到计划的开始。

//我知道我的代码是废话,但我在这里寻求帮助。

无论如何都有代码:

#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;

int main()
{

    {
        while (true)
        {   
        system("cls");
        cout << "Noteikt naturalo skaitlu summu intervala no A [1] lidz B   [N].\n\n";
        Sleep(850);
        cout << "Ludzu ievadiet naturalo skaitli: \n\n";
        int Naturalais, Summa = 0;
        cout << "--> "; cin >> Naturalais; cout << "\n";

        for (int i = 1; i <= Naturalais; ++i)
        {
            Summa += i;
        }
        Sleep(250);
        cout << "Summa = " << Summa; cout << "\n\n";

        char Atbilde;

        cout << "Atkartot Ievadi? (Ja = Ievadit naturalo skaitli velrezi / Ne = Ne uz Aizvert Programmu.\n\n";
        cout << "--> "; cin >> Atbilde; cout << "\n";

        if (Atbilde == 'Ne' || Atbilde == 'ne')
            return 0;
        if(Atbilde == 'Ja' || Atbilde == 'JA')
            break;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

首先关闭:Atbilde == 'Ne' Atbilde是char'Ne'是2个字符。我很惊讶这个编译。但我怀疑它是否会匹配。

然后:无论你的答案是什么,你总是退出循环 - 通过returnbreak。显然你只想在两个条件之一中退出循环。

答案 1 :(得分:1)

添加头文件cstring而不是string

将Atbilde声明为字符串 并申请

if (Atbilde.compare(0,2,"Ne") == 0 || Atbilde.compare(0,2,"ne") == 0)
        continue;
    if(Atbilde.compare(0,2,"Ja") == 0 || Atbilde.compare(0,2,"JA") == 0)
        break;