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

Rust程序输入stop后循环未终止反而崩溃该如何修复?

问题原因
  • read_line()读取用户输入时会将末尾的换行符/回车符一同存入字符串变量,你输入stop后实际得到的字符串是"stop\n"(Linux/macOS)或"stop\r\n"(Windows),直接和"stop"做相等判断永远返回false,所以不会触发break逻辑,程序继续执行字符串转数字的步骤自然会崩溃。
  • 代码没有导入std::io模块,编译阶段就会报错。
修复方案
  1. 相等判断前先对两个输入字符串调用trim()方法,去除首尾的空白字符(包括换行、回车、首尾空格)
  2. 代码开头添加use std::io;导入io模块
  3. (可选)将变量名Power改为符合Rust命名规范的蛇形命名power
修复后完整代码
use std::io;
// 数字次幂计算结构体
struct Number{
    number_itself: i32,
    power: i32,
}
fn main(){
    loop {
        let mut number = String::new();
        let mut power = String::new();
        io::stdin().read_line(&mut number).expect("读取数字输入失败");
        io::stdin().read_line(&mut power).expect("读取次幂输入失败");
        // 先trim再判断是否为stop
        if number.trim() == "stop" || power.trim() == "stop" {
            break;
        }
        let number_int:i32 = number.trim().parse().expect("数字格式转换失败");
        let power_int:i32 = power.trim().parse().expect("次幂格式转换失败");
        let powernum = Number{
            number_itself: number_int,
            power: power_int,
        };
        println!("{}", powernum.number_itself.pow(powernum.power as u32));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 06:36:03