卡在 if 语句中,以检查列表中的数字

Stuck in an if Statement, to check Numbers which are in a List

本文关键字:列表 数字 检查 if 语句 卡在      更新时间:2023-10-16

我是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,其中是我存储数字的第一种方法

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()函数是完全错误的。

它输出容器的第一个元素(大小-1

(次,因为它从 1 循环到(大小-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;
    }
}
相关文章: