你们如何处理控制台输入验证?在C ++中,case / switch是我的首选...
我正在尝试递归函数,但被锁定在较低级别。再加上可能会做得过大。我确实使用“独占或”来管理while循环,但这并不是真正可扩展的。
function prob6()
println("Pick a number; any number:")
x = readline(stdin)
y = parse(Int64, x)
z = 0
println("Select 1 or 2")
p1 = readline(stdin)
p2 = parse(Int64, p1)
select = p2
while xor((p2 == 1), (p2 == 2)) == false
println("Select 1 or 2")
p1 = readline(stdin)
p2 = parse(Int64, p1)
select = p2
end
if select == 1
for i in 1:y
print("$i ")
z = z + i
end
else
z = 1
for i in 1:y
print("$i ")
z = z * i
end
end
println(z)
end
还有其他选择吗?
答案 0 :(得分:2)
有很多方法。我通常创建一个验证循环来检查输入项的类型,并且将使用tryparse而不是parse,因为如果输入格式错误,它不会引发错误:
function queryprompt(query, typ)
while true
print(query, ": ")
choice = uppercase(strip(readline(stdin)))
if (ret = tryparse(typ, choice)) != nothing
return ret
end
println()
end
end
n = queryprompt("Integer please", Int64)
println(n)
x = queryprompt("Float please", Float64)
println(x)