我刚刚开始尝试生锈,所以我已经实现了书的“猜测游戏”的修改版本。每次我试图输入数字,程序都无法从字符串中解析整数:
Guess the number!
Input your guess:
50
You guessed 50
(4 bytes)!
thread 'main' panicked at 'Wrong number format!: ParseIntError { kind: InvalidDigit }', src\libcore\result.rs:997:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
error: process didn't exit successfully: `target\release\experiment.exe` (exit code: 101)
下面应用的代码。
我已经尝试了其他整数类型。
use std::io;
use rand::Rng;
fn main() {
println!("Guess the number!\nInput your guess:");
let mut guess = String::new();
let secnum = rand::thread_rng().gen_range(1,101);
'br: loop {
match io::stdin().read_line(&mut guess) {
Ok(okay) => {
println!("You guessed {} ({} bytes)!", guess, okay);
let intguess = guess.parse::<u8>()
.expect("Wrong number format!");
match secnum.cmp(&intguess) {
std::cmp::Ordering::Less => {
println!("Your guess is smaller!");
}
std::cmp::Ordering::Greater => {
println!("Your guess is bigger!");
}
std::cmp::Ordering::Equal => {
println!("You guessed right!");
break 'br;
}
}
}
Err(erro) => {
println!("Failed to read the line: {}!", erro);
}
}
}
}
从read\u line
输出的字符串包含一个尾随的换行符,因此您需要去掉它才能解析数字。您可以使用trim\u end
(或者也可以使用trim
来处理前导空格):
let guess: u8 = guess
.trim_end()
.parse()
.expect("Wrong number format!");
我试图用localdate解析以下字符串:“04 Aug 2015”。 在尝试了DateTimeFormatters的一些变体之后,我在SO中寻找答案,并发现answer中给出的一些解析示例对我不起作用。经过进一步的研究,我发现Java14不能解析包含字符串月份的日期,如“jul”、“feb”。但在Java8&10中,它工作得完美无缺。 引发的异常是: 下面是在Java8/10上成功打印并在Jav
从stdin读取输入将生成一个,但如何将其转换为整数?
问题内容: 我有一个将存储Number对象的列表。该列表将通过分析字符串列表来填充,其中每个字符串都可以表示Number的任何子类。 如何将字符串解析为通用数字,而不是特定的整数或浮点数? 问题答案: 数字不能实例化,因为它是抽象类。我建议传入数字,但是如果您设置为字符串,则可以使用任何子类来解析它们, 要么 @请参阅NumberFormat
问题内容: 我想将日期字符串解析为日期。我在寻找其他问题,但没有找到答案。 错误消息是java.text.ParseException:而且我不知道怎么了。 你能帮我吗。提前致谢。 编辑:好的。我将其翻译成英文,但是我仍然遇到同样的问题。我不想更改输入,因为它来自邮件数据库。还有其他想法吗? 我发现了问题。我是瞎子 来自数据库的St是,不是 谢谢。 问题答案: 在德语中,“欧洲中部时间”是“Mit
问题内容: 我的输入是以2015年7月1日格式为“ 01-07-2015”的日期的字符串表示形式。我正在尝试将其解析为一个变量: 基于JavaDoc,我希望它能起作用。但是,我收到了一条非常友好和有用的信息: 由以下原因引起:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayOfMonth = 1,MonthOfYear
我的输入是2015年7月1日日期的字符串表示形式,格式为“01-07-2015”。我试图将其解析为变量: 基于JavaDoc,我希望这能起作用。然而,我收到了一条非常友好和有益的信息: 原因:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayofMonth=1,MonthofYear=7,WeekBasedYear[Wee