2013-09-08 2 views
1

У меня возникла проблема с чередованием кода.Looping if statement in Lua

Я сделал программу, в которой вам нужно вставить номер, и компьютер вычисляет некоторые вещи.

Моя проблема в том, что я не могу зациклировать оператор if, который запрещает пользователю вводить письмо или что-то в этом роде.

Вот кусок кода, мне нужно в цикле:

-- first number 
io.write("Tell me a number: ") 
a = io.read("*number") 
-- typing a letter 
if a == nil 
    then 
     io.write("\n", "Sorry, this is an invalid imput.", "\n") 
     io.write("\n", "Please tell me a number: ") 
end 

Не могли бы вы мне помочь?

Я только что начал программировать в Lua, и я очень смущен.

спасибо.

ответ

2

Вы ищете ... ... ну, петли:

local l = io.read("*line") 
local a = tonumber(l) 

while a == nil do 
    print("sorry, invalid input") 
    l = io.read("*line") 
    a = tonumber(l) 
end 

(Примечание стороны: я не говорю Lua, я нашел tonumber() функции через 2 минуты googling.)

+0

спасибо! На самом деле, я только начал программировать ... с нуля. Еще раз спасибо и у вас хороший день. :) –

+0

@MatteoBini Добро пожаловать. –

+1

В качестве побочного примечания @ Решение H2CO3 учит вас еще одному: при вводе пользователем интерактивного ввода вы всегда должны читать ввод как текст ('io.read (" * line ")'), а затем обрабатывать его, чтобы увидеть, соответствует вашим ожиданиям и соответствующим образом устраняет ошибки. 'io.read (" * number ")' используется, по существу, при чтении из файлов с известной структурой, т. е. когда вы знаете, что получите номер. По этой причине 'io.read (« * number »)' редко используется, поскольку он читается со стандартного ввода, который обычно является консолью, если не было перераспределения на уровне ОС. –