代码:
use std::io;
use std::num::Wrapping;
//获取用户输入
fn get_input() -> (u32, u32, u32) {
println!("输入十以内的任意三个数字");
let mut inputone = String::new();
io::stdin().read_line(&mut inputone).expect("输入错误");
let mut inputtwo = String::new();
io::stdin().read_line(&mut inputtwo).expect("错误的输入");
let mut inputthree = String::new();
io::stdin().read_line(&mut inputthree).expect("错误的输入");
//解析字符串内容 确认落宫数字
let _one: u32 = inputone.trim().parse::<u32>().unwrap();
let _two: u32 = inputtwo.trim().parse::<u32>().unwrap();
let _three: u32 = inputthree.trim().parse::<u32>().unwrap();
return (_one, _two, _three);
}
fn qike() {
let (one, two, three) = get_input();
println!("输入字符解析为{},{},{}", one, two, three);
println!("依据以上数字起课为:");
//根据确定落宫数字来定宫
//定一宫
let yigong: u32 = one % 6;
println!("one = {}", yigong);
let ergong: Wrapping<u32> = Wrapping::<u32>(yigong + two - 7);
println!("two = {}", ergong);
/* let sangong: u32 = ergong + three - 7;
}
fn main() {
qike();
}
错误信息
输入十以内的任意三个数字
1
2
3
输入字符解析为1,2,3
依据以上数字起课为:
one = 1
thread 'main' panicked at 'attempt to subtract with overflow', src/main.rs:96:49
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
这个该怎么改呢?
1
共 4 条评论, 1 页
评论区
写评论using i32
你是对的 谢谢 对以下内容的回复:
写错了,是
Wrapping(yigong) + Wrapping(two) - Wrapping(7)
可能是
Wrapping::<u32>(yigong + two - 7)
改成Wrapping(yigong) + two - 7)
吧 不过我觉得你可能需要取余或者saturating_sub