Юлия: Проверка ввода с консоли - PullRequest
0 голосов
/ 21 мая 2019

Как вы, ребята, справляетесь с проверкой ввода с консоли? В C ++ регистр / переключатель - это мое начало ...

Я пробовал рекурсивную функцию, но был заблокирован на более низких уровнях. Плюс это может быть переусердствовать. Я управлял циклом while с помощью «exclusive» или «only», но это не очень масштабируемо.

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 Ответ

2 голосов
/ 22 мая 2019

Есть много способов. Я обычно создаю цикл проверки, чтобы проверить тип элемента ввода, и использую 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)
...