@Exception17

Как вводить только числовые значения в lua?

Мне нужно ввести с клавиатуры число, а затем работать с ним в программе.
Попробовал вот так:
a=io.read();
if a>0 then
  print(a);
end

Но компилятор выдает ошибку, так как в условии оператора if я пытаюсь сравнить строковое значение с числом.
Подскажите пожалуйста, как мне вводить именно числа?
  • Вопрос задан
  • 386 просмотров
Решения вопроса 1
dollar
@dollar Куратор тега Lua
Делай добро и бросай его в воду.
Вот эта функция переводит строку в число, а при невозможности возвращает nil:
tonumber(str)

Поэтому ваш код можно изменить примерно так:
a = io.read(); --строка
local num = tonumber(a) -- число или nil
if num ~= nil and num > 0 then
  print(num);
end

Ещё вариант:
a = io.read(); --строка
local num = tonumber(a) -- число или nil
if num == nil then --строку невозможно перевести в число
  print("error") --выводим текст ошибки
elseif num > 0 then --строка перевелась в число, и оно больше нуля
  print(num); --выводим это число
end
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nightmare1
@Nightmare1
Программист
local function read_number_from_input()
    local result = true
    while result do result = tonumber(io.read:read("Enter the number: ")) end
    return result
end

local readed_number = read_number_from_input()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы