LUA: чтение текста после чтения номера не работает - PullRequest
0 голосов
/ 31 мая 2018

Я поражен командой io.read в LUA.Приведенный ниже пример перепрыгивает через строку для чтения текста.Это происходит только в том случае, если ранее был введен номер.

repeat
  print("Input number!")
  number=io.read("*n")
  print("Would you like do to this again? (y/n)")
  again = io.read()
until again == "n"

Я пробовал это в двух IDE (repl и ZeroBrane), и это заставляет меня MAAAD !!!

Может кто-нибудь помочь, пожалуйста?

Приветствия,

Ульрих

1 Ответ

0 голосов
/ 01 июня 2018

Попробуйте читать построчно как строку и конвертировать строку в число, используя tonumber ()

repeat
        print("Input number!")
        num = tonumber(io.read())    
        print('Would you like do to this again? (y/n)')
        again = io.read()
until again == 'n'

Во время отладки я вижу, что второй io.read использует буфер, запущенный сразу после окончания вашего числа.

Ваш код с еще несколькими отпечатками

repeat
    print("Input number!")
    -- num = tonumber(io.read())
    num = io.read('*n')
    print('you entered-> ' .. tostring(num))

    print('Would you like do to this again? (y/n)')
    again = io.read()
    print('your choise from (y/n)-> ' .. again)
until again == 'n'

вывод

Input number!
234
you entered-> 234
Would you like do to this again? (y/n)
your choise from (y/n)->
Input number!
234y
you entered-> 234
Would you like do to this again? (y/n)
your choise from (y/n)-> y
Input number!
234234n
you entered-> 234234
Would you like do to this again? (y/n)
your choise from (y/n)-> n

Это описание с Программирование на Lua: 21,1

Вызов io.read ("* number") читает число из текущего входного файла.Это единственный случай, когда read возвращает число вместо строки.Когда вам нужно прочитать много чисел из файла, отсутствие промежуточных строк может значительно улучшить производительность.Опция * number пропускает все пробелы перед числом и принимает числовые форматы, такие как -3, +5.2, 1000 и -3.4e-23.Если он не может найти число в текущей позиции файла (из-за неправильного формата или конца файла), он возвращает ноль.

Пожалуйста, извинитесь за плохое описание.

...