我正在尝试制作一个程序来提示用户输入,直到他们输入特定范围内的数字。
当我输入指定范围之外的字母、符号或数字时,确保代码不会出错的最佳方法是什么?
在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
样品运行:
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
这是实现这类功能的一种可能方法:
while true
print("Please enter a whole number between 1 and 5: ")
input = readline(stdin)
try
if parse(Int, input) <= 5 || parse(Int, input) >= 1
print("You entered $(input)")
break
end
catch
@warn "Enter a whole number between 1 and 5"
end
end
样品运行:
Please enter a whole number between 1 and 5: 2
You entered 2
请参阅此链接,了解如何将用户输入解析为int.