You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:04:06