loops - 为什么当我输入“停止”时循环不中断
问题描述
为了练习 Rust 语言中的结构,我决定创建一个程序,它打印你输入的数字,提升到你输入的幂。该程序应该可以工作,直到您输入“stop”,但是有一个问题:当我输入“stop”时,循环不会中断,并且我的程序在尝试将字符串“stop”转换为数字后崩溃。如何解决?
//Power of number
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("Hren kakaya-to");
io::stdin().read_line(&mut Power).expect("Huyeta");
if number==String::from("stop") || Power==String::from("stop"){
break;
}
let number_int:i32 = number.trim().parse().expect("Ne vyshlo");
let power_int:i32 = Power.trim().parse().expect("Hren' vyshla");
let powernum = Number{
number_itself:number_int,
power:power_int,
};
println!("{}",powernum.number_itself.pow(powernum.power as u32));
}
}```
解决方案
您的字符串实际上并不相等,从返回的字符串末尾read_line()
还包含一个换行符。您可以执行类似的操作以使其按预期工作:
struct Number {
number_itself: i32,
power: i32,
}
fn main() {
loop {
let mut number = String::new();
let mut Power = String::new();
std::io::stdin()
.read_line(&mut number)
.expect("Hren kakaya-to");
std::io::stdin().read_line(&mut Power).expect("Huyeta");
if number.trim() == "stop" || Power.trim() == "stop" {
break;
}
let number_int: i32 = number.trim().parse().expect("Ne vyshlo");
let power_int: i32 = Power.trim().parse().expect("Hren' vyshla");
let powernum = Number {
number_itself: number_int,
power: power_int,
};
println!("{}", powernum.number_itself.pow(powernum.power as u32));
}
}
推荐阅读
- api - 在 DDD(域驱动设计)中创建域之前的中间计算调用
- python - 为什么在 maxpooling 之前使用 relu?
- java - 当来自应用程序的大量日志记录时,Log4j2 异步日志记录会卡住
- react-native - 反应本机 SectionList 不更新
- android - 我想添加firebase依赖
- html - 如何将csv文件转换为html表?
- swift - Swift SCNAction,旋转到四元数
- jquery - 是否可以进行 SVG 路径块单击操作?
- matlab - 如何对指定列数的矩阵列求和?
- facebook - Facebook Instant Games:某些帐户在调用 purchaseAsync() 时返回错误:CLIENT_UNSUPPORTED_OPERATION