为什么运行C++代码时需重复输入数值才能执行?如何修复该问题?
问题原因与修复方案
嘿,我来帮你搞定这个小问题~
问题根源
你遇到的需要重复输入数值的问题,核心原因是代码里重复读取了变量x:
- 你在
while循环里已经完成了输入校验,当用户输入有效数值后,程序会跳出循环,此时x已经被正确赋值了。 - 但紧接着你又写了一行
cin >> x;,这会让程序再次等待用户输入新的数值,所以才会出现“输入两次才执行输出”的情况。
修复方法
只需要把那行多余的cin >> x;删掉就可以了,让while循环获取的有效数值直接用于后续的输出循环。
修改后的完整代码
#include <iostream> #include <limits> // 别忘了包含这个头文件,numeric_limits需要它 using namespace std; int main() { int x; cout << "How many times do you want me to say [London Town], Numbers only" << endl; // 这里你原来写的是end,应该是endl哦 while (true) { cin >> x; if (!cin) { cout << "Please type a number not text" << endl; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); continue; } else { break; } } // 删掉了多余的cin >> x; for (int i = 0; i < x; i++) { std::cout << "London Town \n"; } return 0; // 建议加上main函数的返回值,更规范 }
另外补充几个小细节:
- 你原来的代码里写了
cout << ... << end;,这里应该是endl,不然会编译报错。 - 要包含
<limits>头文件,不然numeric_limits会无法识别。 - 给
main函数加上return 0;,更符合C++的编码规范。
内容的提问来源于stack exchange,提问作者A Hassan
相关产品推荐
相关产品推荐

