【问题标题】:lua function argument treated as string?lua函数参数被视为字符串?
【发布时间】:2015-11-16 17:22:48
【问题描述】:

我正试图让这个程序在 lua 中工作以分解一个数字,除了其中的这一行代码外,一切都工作正常。代码如下:

function factor(a)
 print("factoring: " .. a)
 print()
 totali = 0
 totaldiv = 0
 for i = 1, a do
  if (a%i == 0) then
   if (i<a) then
    totaldiv = totaldiv + 1
   end
   print(i)
   i = i + 1
   totali = totali + 1
  else
   i = i + 1
  end
 end
 if totali == 2 then
  print("That is a prime number!")
 elseif totaldiv == a then
  print("That is a perfect number!")
 end
end
io.write("Enter a number to factor: ")
some = io.read()
factor(some)
io.read()

据我所知,进攻线是if (i&lt;a) then。 我究竟做错了什么? 谢谢!

【问题讨论】:

  • 您从io.read 得到的值将是一个字符串,是的。如果需要,您需要将其转换为数字(lua 在某些情况下也会隐式执行此操作)。
  • @Etan Reisner,如何将数字设为变量 a?如果是,它不会输出 6 作为一个完美的数字,还是我在它的另一部分错了?在我看来,它并没有提出实际的函数参数。我做了“i
  • 我不知道您实际遇到了什么问题。你的帖子被切断了,你没有说问题是什么。我只是给出了一个关于io.read 和字符串值的通用答案。修正你的帖子,清楚地解释确切的问题,我也许可以提供更多帮助。
  • 好吧...由于某种原因它切断了我的帖子。我试图让我的程序输出“这是一个完美的数字!”如果它的适当除数之和等于数字本身。从我所看到的,它甚至没有对那部分做任何事情。我尝试在倒数第二个结束之前的 for 循环之后打印 totaldiv ,它甚至不打印任何东西......我很讨厌这个。好的,我将最后一个 a 转换为一个数字,它起作用了!谢谢!
  • factor(some) 替换为factor(some + 0)factor(tonumber(some))

标签: lua


【解决方案1】:

if (i&lt;tonumber(a)) then 应该可以工作。
您请求了一个输入,该输入将作为字符串返回。
因此,您不能使用if (i&lt;a) then,因为您正在通过&lt; 比较数字和字符串。
你根本不能说 2 小于 '4'

【讨论】:

  • 是的,抱歉……我写这篇文章的时候可能很累。现在修好了!
猜你喜欢
  • 2015-05-15
  • 2011-10-25
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2015-02-23
  • 1970-01-01
  • 2021-07-17
  • 2015-04-07
相关资源
最近更新 更多