插入if语句,以检查列表中的数字

时间:2019-04-16 10:12:24

标签: c++ loops

我是C ++的新手,但我希望每个人都能解决问题。 因此,我制作了一个带有数字的列表,可以将其存储在该列表中。但是每次我想用KeyState检查列表中的内容时,它都会一直循环。

cout << "Which Number do you want to Store?" << endl;
int newNum;
cin >> newNum;
numberContainer.push_front(newNum);

cout << "To Show Numbers you stored press N" << endl;
if (GetKeyState(0x4E))
{
    //Show all Numbers which are stored
    Dump();
}

这就是我的转储方法

for (int i = 1; i < numberContainer.size(); i++)
    {
        cout << "Position: " << i;
        for (it = numberContainer.begin(); it != numberContainer.end(); it++)
        {
            cout << " stored Number: " << *it << endl;
            break;
        }
    }

最后我有一个GameLoop方法,它有一个While方法,第一个方法是我存储数字的方法

1 个答案:

答案 0 :(得分:3)

GetKeyState未阻止。因此,在您的程序中,用户必须在提交数字后立即按下键。如果用户未这样做,则会提示输入下一个数字。

也许这会给您您想要的东西:

cout << "Which Number do you want to Store?" << endl;
int newNum;
cin >> newNum;
numberContainer.push_front(newNum);

char key;
do {
    cout << "Enter 'N' to show the numbers you have stored or 'C' to continue     adding numbers." << flush;
    cin >> key;
    if (key == 'N') {
        //Show all Numbers which are stored
        Dump();
    }
} while (key != 'C');

另外,我建议您添加一些退出选项,例如if (key == 'Q') exitOuterLoop = true;

顺便说一句,您的Dump()函数是完全错误的。

它输出容器的第一个元素(size-1)次,因为它从1循环到(size-1),并在无条件脱离内部循环之前在内部循环中输出第一个元素。绝对没有道理。

我想它应该像这样:

for (size_t i = 0; i < numberContainer.size(); i++) {
    cout << "Position: " << (i+1)
         << " stored Number: " << numberContainer[i] << endl;
}

或者-如果您的容器不支持随机访问:

{
    unsigned int i = 0;
    for (auto const & element : numberContainer) {
        ++i;
        cout << "Position: " << i
             << " stored Number: " << element << endl;
    }
}