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

Swift人机投注循环:用户输入无法暂停循环的正确解决方法

Swift 命令行投注循环的正确实现

首先明确:在本地Swift命令行环境中,readLine()本身就会阻塞当前线程,等待用户输入完成后才会继续执行后续代码。你遇到的循环未暂停问题,大概率是运行环境不支持交互输入(比如部分在线编译器、非交互模式的控制台)。如果是本地终端运行,以下是优化后的正确代码:

let steps = [1, 2, 3, 4, 5]
var x = 1

while x < 35 {
    for step in steps {
        switch step {
        case 1, 2, 3, 5:
            x += 1
            print("自动累加后x的值: \(x)")
        case 4:
            print("请输入要累加的金额:")
            // readLine()会阻塞等待用户输入,直到用户回车
            if let input = readLine(), let increment = Int(input) {
                x += increment
                print("用户输入累加后x的值: \(x)")
            } else {
                print("输入无效,请输入整数")
                // 输入无效时停在当前步骤,重新要求输入
                continue
            }
        default:
            break
        }
        
        // 每次步骤后检查终止条件,提前退出循环
        if x >= 35 {
            break
        }
    }
}

print("投注循环结束,最终x的值: \(x)")

关键说明:

  • readLine()的阻塞特性:本地终端运行时,调用readLine()会暂停当前线程,等待用户输入并按下回车,输入完成后才会继续执行后续代码,不需要额外创建线程或信号量实现暂停。
  • 代码优化:用switch替代多个if判断,逻辑更清晰;输入无效时用continue回到当前步骤,重新获取输入;每次步骤后检查终止条件,避免不必要的循环。
  • 环境排查:如果仍未暂停,确保在支持交互的环境中运行——打开本地终端,用swift run命令执行程序,不要使用不支持交互的在线编辑器或IDE控制台。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:32:11