首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环用户输入,直到用户输入有效输入。

循环用户输入,直到用户输入有效输入。
EN

Stack Overflow用户
提问于 2022-08-16 17:40:19
回答 1查看 159关注 0票数 0

我学到了一点生锈,通常在我的代码中,我喜欢实现一个函数,它循环用户输入直到它是正确的,但在这种情况下,它不工作,我不知道为什么。我尝试过一个名为is_ok()的方法,但这总是返回false。代码如下

代码语言:javascript
复制
use std::io;

macro_rules! input {() => {{
        let mut it = String::new();
        loop {
            io::stdin().read_line(&mut it).expect("Failed to read input");
            if (it.trim().parse::<i16>().is_ok()) {break}
            else {println!("Error: Different Type convertion");}
        }
        it.trim().parse().expect("please give me correct string number!")
}}}

fn main () {
    println!("Enter any number: ");
    let my_num: i16 = input!();
    println!("Entered number is {}", my_num);
    println!("Enter any other number: ");
    let mut a: i16 = input!();
    println!("Entered number is {}", a);
    a += my_num;
    println!("The sum of two numbers is {}", a);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-16 17:50:51

来自read_line() documentation (重点雷):

锁定这个句柄并读取一行输入,将其附加到指定的缓冲区中。

因此,如果您输入了一些无效的内容,它就会停留在那里,解析就会失败。

每次调用read_line()或创建新字符串之前,先对字符串进行clear()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73378118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档