朱莉娅:控制台输入验证

时间:2019-05-21 20:30:19

标签: console julia

你们如何处理控制台输入验证?在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

还有其他选择吗?

1 个答案:

答案 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)