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

Swift中String转Int后相加报错无法对两个Int?操作数使用+运算符如何解决

错误原因
  • 语法层面:String调用Int()构造器的返回值是可选型Int?,转换失败时会返回nil,Swift语法不支持直接对两个可选型数值执行+运算,因此抛出编译错误。
  • 逻辑层面:你当前先对字符串执行+运算属于字符串拼接,会把"6"和"5"拼接为"65",而非数值6+5,完全不符合得到19的预期。
修复方案

如果你能100%确认待转换的字符串都是合法的数字字符,可以用强制解包处理可选型,同时调整运算顺序先转数值再做加法:

var n1 = "6"
// 先把字符串转Int再和5做数值加法,得到6+5=11
var number = Int(n1)! + 5

var n2 = "3"
// 先把字符串转Int再和5做数值加法,得到3+5=8
var number2 = Int(n2)! + 5

var finalNumber = number + number2
print(finalNumber) // 输出19

如果不能保证字符串一定可以转成合法Int,推荐用可选绑定避免强制解包引发的崩溃:

var n1 = "6"
var n2 = "3"

if let num1 = Int(n1), let num2 = Int(n2) {
    let finalNumber = (num1 + 5) + (num2 + 5)
    print(finalNumber) // 转换成功时输出19
} else {
    print("字符串包含非数字内容,转换失败")
}

也可以用空合运算符给转换失败的场景设置默认值:

var n1 = "6"
var number = (Int(n1) ?? 0) + 5
var n2 = "3"
var number2 = (Int(n2) ?? 0) + 5
var finalNumber = number + number2
print(finalNumber)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:18:01