2015-07-08 3 views
0

У меня есть сценарий Lua, который я пытался заставить работать. Это мой первый сценарий Lua. Я попросил кого-то еще запустить мой код, и это сработало отлично для них. Однако, когда я пытаюсь запустить его в любом месте (я пытался работать в Ideone.com, codepad.com, lExecutor, Garry's Mod и т. Д.), Я получаю такое же сообщение об ошибке. Сообщение об ошибке: «Попытка сравнить nil с номером», и это в строке 4. Если это помогает, моя ОС - это окна 7. Мой код ниже, и я прошу вас, ребята, проверить его, если он работает. Если возможно, также укажите, что вы использовали для запуска, если это сработало. В принципе, это означает, что появится окно ввода, и пользователь должен ввести свой возраст. Если возраст более или менее 12 лет, он скажет, что вы слишком стары/молоды, и если возраст 12 лет, он скажет: «Добро пожаловать, сынок!».Lua Другие могут запустить мой код отлично, но я столкнулся с ошибками?

io.write ("Enter your age:") 
age = io.read() 
age = tonumber(age) 
if age < 12 then 
    print ("O noes, you are too young!") 
elseif age > 12 then 
    print ("O noes, you are too old!") 
else 
    print ("Welcome, son!") 
end 
+0

«Попытка сравнить nil с номером» означает, что в этой строке ваша переменная «nil», а не число. Это произойдет, когда прочитанное значение не будет конвертировано в число. Поэтому, если вы введете 'foo' в приглашении, например. Если вы вводите номер, он должен работать. –

+0

«когда я пытаюсь запустить его в любом месте». Первое место, которое вы должны были попробовать, это [стандартный интерпретатор Lua] (http://luabinaries.sourceforge.net/download.html) в командной строке. – Mud

ответ

2

Сам код в порядке. Проблема в том, что если вы попробуете это на таких сайтах, как Ideone, вы должны явно указать вход, иначе age не получит ввода, поэтому его значение равно nil, что вызывает ошибку.

Demo on Ideone, обратите внимание stdin часть.

2

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

+0

Ahhhh. Я получаю это сейчас. Спасибо, ребята, за вашу помощь: D – katooosha