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

Rust中相同逻辑的for循环无输出但while循环可正常输出是为什么?

问题原因

核心是你的输入存储变量和提示文字完全对应错误:

  • 第一行提示输入lower limit(下限),你却把读取到的输入存到了变量limit中
  • 第二行提示输入upper limit(上限),你反而把读取到的输入存到了变量lower_limit中

Rust的a..b是左闭右开的迭代区间,只有当a < b时才会执行循环逻辑。如果你按照提示正常先输入小的下限、再输入大的上限,最终得到的迭代区间就是大的数值..小的数值,循环直接不会执行,自然没有任何输出。

修复方案

把两个读取输入的存储变量调换即可,修正后的核心代码如下:

println!("Input lower limit.");
io::stdin()
    // 下限输入存入lower_limit变量
    .read_line(&mut lower_limit)
    .expect("Failed to read line");

let lower_limit: u64 = lower_limit.trim().parse().unwrap();

println!("Input upper limit.");
io::stdin()
    // 上限输入存入limit变量
    .read_line(&mut limit)
    .expect("Failed to read line");

let limit: u64 = limit.trim().parse().unwrap();

补充优化建议:判断整除不需要转成f64做除法比较,直接用整数取模运算i % 15 == 0判断即可,性能更高还不会遇到浮点数精度隐患。

内容的提问来源于stack exchange,提问作者Merlin1846

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:03