如何提示用户输入直到输入在 Julia 中有效

log*_*ick 3 julia

我正在尝试制作一个程序来提示用户输入,直到他们输入特定范围内的数字。

当我输入超出指定范围的字母、符号或数字时,确保代码不会出错的最佳方法是什么?

gio*_*ano 5

作为替代parse,您可以使用tryparse

tryparse(type, str; base)

类似parse,但返回请求类型的值,或者 nothing字符串不包含有效数字。

优势parse在于您可以在不使用try/ 的catch情况下进行更清晰的错误处理,这将隐藏块中引发的所有异常。

例如你可以这样做:

while true
    print("Please enter a whole number between 1 and 5: ")
    input = readline(stdin)
    value = tryparse(Int, input)
    if value !== nothing && 1 <= value <= 5
        println("You entered $(input)")
        break
    else
        @warn "Enter a whole number between 1 and 5"
    end
end
Run Code Online (Sandbox Code Playgroud)

示例运行:

Please enter a whole number between 1 and 5: 42
? Warning: Enter a whole number between 1 and 5
? @ Main myscript.jl:9
Please enter a whole number between 1 and 5: abcde
? Warning: Enter a whole number between 1 and 5
? @ Main myscript.jl:9
Please enter a whole number between 1 and 5: 3
You entered 3
Run Code Online (Sandbox Code Playgroud)