Julia新手求助:如何获取用户输入并存入数组?代码输出异常
Julia读取用户输入存入数组并打印的问题解决
你的代码存在几个关键问题,导致无法读取输入且最终输出nothing,以下是问题分析和修正方案:
问题点
- 函数调用错误:
readline是函数,必须加括号readline()才会执行读取输入操作,否则只是引用函数对象,不会触发输入读取。 - 未转换输入类型:用户输入的内容是字符串格式,需要用
parse转成数字类型(整数Int或浮点数Float64),否则数组会存储字符串而非数字。 - 函数无返回值:
ask()函数最后没有返回数组lst,Julia函数默认返回最后一行表达式的结果,你的函数最后一行是i += 1,循环结束后函数没有返回数组,因此调用ask()会返回nothing。 - 数组初始化优化:建议指定数组类型(比如
Int[]),避免创建Any类型的数组,提升性能和类型安全性。
修正后的代码
function ask() lst = Int[] # 指定存储整数的数组,若需存浮点数可改为Float64[] println("pick 5 numbers to add to a list") for _ in 1:5 # 用for循环替代while计数,更符合Julia惯用写法 input = readline() # 执行readline函数读取用户输入 num = parse(Int, input) # 将输入字符串转为整数 push!(lst, num) # 将数字添加到数组,无需赋值给变量 end return lst # 返回存储好的数组 end result = ask() println("你输入的数组是:", result)
补充说明
- 如果需要支持浮点数输入,只需把代码中的
Int替换为Float64即可。 - 使用
for _ in 1:5替代while循环,无需手动维护计数器i,代码更简洁易读。
内容的提问来源于stack exchange,提问作者D_D
相关产品推荐
相关产品推荐

