for-loop - 我收到一条错误消息,说我的“for”限制不是数字,即使我没有引用该变量
问题描述
基本上我正在制作一个程序(用于学校),用户输入几个体积的球,你需要一个公式来获得直径,然后看看直径是否太大。但是我的一个变量应该是一个球的名称,所以我可以在我的输出中引用它(例如:你给我一个最大直径为 2 厘米的乒乓球。然后你给我球的数量运行程序,3。然后你给出 3 卷,1.5、2.5 和 2 - 输出 1.5 - 乒乓球,2.5 - 不是乒乓球,2 - 乒乓球)但是每当我运行我的程序并给出我的球的名称我收到一条错误消息,说我的“for”限制不是数字,即使我不是指该变量而是指另一个变量。
local n = io.read("*n") -- amount of balls
for getal1 = 1, n do
local naam_Bal = io.read() -- here I get an error if I enter a string
local av = io.read("*n") -- amount of volumes for the type of ball
local gewenste_Diameter = io.read("*n") -- maximum diameter
local volume
local diameter
for getal2 = 1, av do
volume = io.read("*n") -- volume for each ball
diameter = 2 * (((3/4)*(volume/math.pi)) ^ (1/3)) -- formula to calculate the diameter
print(diameter)
end
end
这可能是一个愚蠢的错误,但我真的被困住了
解决方案
这是因为io.read("*n")
未读 EOL(在数字之后)。
您的脚本中实际发生的情况:
local n = io.read("*n")
读取编号但不读取 EOL。local naam_Bal = io.read()
读取前一个号码的 EOL 但不读取名称。local av = io.read("*n")
读取名称。
解决方案:
如果您将每个数字放在单独的输入行中,
则应始终使用io.read("*n", "*l")
而不是io.read("*n")
.
推荐阅读
- ios - 尽管我的应用程序基于 64 位架构,但在 ios 15 中我收到“应用程序需要更新”的错误消息
- elasticsearch - ElasticSearch catenate_words -- 只保留连接值
- php - 使用 Linux Alpine 3.5.2 的 Netezza PHP 连接问题
- sql - 如何按最大的字符串数组大小对 SQL 查询进行排序?
- javascript - 电子
标题中的推送通知计数 - javascript - python 与 JavaScript 中的异步等待之间的区别
- jooq - Jooq selectFrom 没有返回所有记录
- ios - kCVPixelFormatType_420YpCbCrBiPlanarVideoRange 到 kCVPixelFormatType_32BGRA 的转换
- xgboost - 用于多类和 RandomizedSearchCV 的 XGBoostClassifier 为所有类提供 nan 分数和相同的概率
- html - 如何从不使用表单的前端将数据发布到快递服务器?