phuong
phuong

Reputation: 11

Getting error 'for' loop limit must be a number

when implementing for loop I get error 'for' limit must be a number and here is my code,and my input is number phone,can someone help me edit, let me complete. Thank you

local a = tonumber(nameInput.value); 
for  i = 1,tonumber(nameInput.value),1 do       

        line = fh:read()
        if line == nil then break end
        
        a = a +tonumber(nameInput.value);

Upvotes: 0

Views: 419

Answers (1)

Nifim
Nifim

Reputation: 5031

tonumber will return nil if the value passed to it can not be converted, a phone number like 123-456-7890 is not a valid input to tonumber it does not know what to do with the -s in the string.

Some documentation on tonumber: Lua 5.3 Manual: tonumber

to handle this you can use or 0 in lua to create a ternary of sorts.

local a = tonumber(nameInput.value) or 0; 
for  i = 1,tonumber(nameInput.value) or 0,1 do       

  line = fh:read()
  if line == nil then break end

  a = a +tonumber(nameInput.value);
end 

now when tonumber(nameInput.value) returns nil you will use the default value of 0. With this change you will no longer see the error but when nameInput.value is a non-numeric value you will also no enter your loop.

Upvotes: 1

Related Questions