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

Rust中字符串解析为usize始终报错,请求协助排查

问题原因

你遇到的问题是因为read_line会把用户输入时按下的**换行符(\n)**也一并读取到字符串里。比如你输入5并回车,input变量实际存储的是"5\n",这个带换行的字符串无法被parse::<usize>()成功解析,所以每次都会进入错误分支返回None。

修复方案

在解析前,先对输入字符串调用trim()方法,去掉首尾的空白字符(包括换行符、空格等),这样就能得到纯数字的字符串,再进行解析就没问题了。

修正后的代码示例:

use std::io;

fn main() {
    print!("Enter a square: ");
    loop {
        io::stdout().flush().expect("Flush Error");

        let mut input = String::new();
        io::stdin().read_line(&mut input).expect("Input Error");
        
        // 先trim掉首尾空白(包括换行符)
        let trimmed_input = input.trim();
        
        match trimmed_input.parse::<usize>() {
            Ok(num) => {
                // 拿到有效数字,执行后续游戏逻辑
                println!("You selected square: {}", num);
                break; // 这里可根据游戏逻辑调整是否退出循环
            },
            Err(_) => {
                print!("Invalid input. Try again: ");
            }
        }
    }
}
额外优化提示
  • 直接匹配parse的结果,省去额外的Option变量,逻辑更简洁
  • trim()还能处理用户输入时不小心多打的空格,让输入校验更鲁棒

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:20:05