为什么这些代码行导致我的程序只在我输入两次后才接受我的输入(每次输入后按回车键)?

Why does these lines of code cause my program to only accept my input after I've entered it twice (pressing enter after each entry)?

我对 C++ 还是有点陌生​​(目前正在上一门课程),我非常接近完成我的最终项目。但是我的程序中的这些代码行和其他类似代码导致我的程序仅在输入两次后才接受输入。我花了 2 个小时重新输入它,但仍然无济于事。

 cout <<endl<< "Enter balance:"<<endl;
 cin >> balance;
 while(!(cin>>balance))
{
    cin.clear();
    cin.ignore(999,'\n');
    cout<<endl<<"Invalid data type! Number expected. Please enter balance again:"<<endl;
}

摆脱从 stdin 读取的双重调用。

cout << endl << "Enter balance:" << endl;
//cin >> balance;
while(!(cin >> balance)) { //This reads in, and continues while read was NOT successful
    cin.clear();
    cin.ignore(999,'\n');
    cout << endl << "Invalid data type! Number expected. Please enter balance again:" << endl;
}