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

Julia中带try/catch的while循环输入校验报UndefVarError求助

错误原因

Julia的作用域隔离规则中,try代码块内部定义的变量属于块级局部变量,仅在块内部生效,块外的后续代码无法访问,因此你输入合法值后执行println时会报变量未定义错误。

修正后代码

提前在外层作用域声明变量即可解决作用域问题,同时补充了你原本要求的1~8范围校验逻辑:

# 外层预先声明变量,打通作用域访问权限
selected_row = 0
while true
    try
        input_str = readline()
        selected_row = parse(Int8, input_str)
        # 追加范围校验,符合需求的[1,8]区间限制
        if 1 ≤ selected_row ≤ 8
            break
        else
            @warn "请输入1到8之间的有效数字"
        end
    catch e
        if isa(e, LoadError) || isa(e, ArgumentError)
            @warn "请输入1到8之间的有效数字"
        end
    end
end

println("你选择了 (C|R) ($selected_row)")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:30:05