You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia数组访问报错BoundsError: attempt to access 0-element Vector{Int64} at index [1]如何解决

Julia BoundsError 问题排查及修复

错误原因

你声明的newNum = Int64[]是长度为0的空Int64向量,Julia不支持直接对空向量的指定下标位置赋值,只有预先分配了对应长度的数组存储空间,或是使用追加元素的方法操作数组,才能正常写入值。代码第一次循环执行到newNum[i] = seed时,i=1,尝试给长度为0的数组的第1位赋值,直接触发了边界错误。

修复方案

提供两种可行的修改方式,任选其一即可:

  • 方案1:预先分配数组长度
    提前给newNum分配和循环次数匹配的存储空间,即可直接用下标赋值,修改后的完整代码如下:
    seed = 1234
    N = 2
    newNum = Vector{Int64}(undef, N)
    for i in 1:N
        seq = digits(seed*seed, pad=8)
        seed = seq[6]*1000+seq[5]*100+seq[4]*10+seq[3]
        newNum[i] = seed
    end
    newNum[2]
    
  • 方案2:动态追加元素
    使用Julia内置的push!方法,每次循环把新生成的seed追加到数组末尾,不需要提前指定数组长度,修改后的完整代码如下:
    seed = 1234
    N = 2
    newNum = Int64[]
    for i in 1:N
        seq = digits(seed*seed, pad=8)
        seed = seq[6]*1000+seq[5]*100+seq[4]*10+seq[3]
        push!(newNum, seed)
    end
    newNum[2]
    

内容的提问来源于stack exchange,提问作者user10905494

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 01:15:04