如题所示,本文为大家讲解的是,如何在match枚举项中添加if条件,下面,我们要做的就是通过输入一个数(该数首先必须为三位数),判断该数是否是水仙花数,并给出相应的输出提示。
先普及一下什么叫水仙花数,即一个数,它的百位上的数、十位上的数、个位上的数,三者的三次方之和刚好等于该数本身,即为水仙花数。
println!("请输入一个数:");
let mut mydata = String::new();
std::io::stdin().read_line(&mut mydata).expect("read line error !");
match mydata.trim().parse::<u32>(){
Ok(data) =>{
match data{
data if (data<=99 || data >999) => println!("该数不在范围内"),
data if (100..=999).contains(&data) =>{
let gw = data % 100 % 10 ;
let sw = data % 100 / 10;
let bw = data / 100;
if gw*gw*gw + sw*sw*sw + bw*bw*bw == data{
println!("该数为水仙花数:{}",data);
}else{
println!("该数不是水仙花数!");
}
},
_ => panic!("无效之数"),
}
},
Err(e) => {
panic!("输入错误了");
}
}
运行如上代码,如下图所示的结果:
请输入一个数:
153
该数为水仙花数:153