【问题标题】:Binary operator '+' cannot be applied to operands of type 'Int' and '[Int]'二元运算符“+”不能应用于“Int”和“[Int]”类型的操作数
【发布时间】:2018-04-25 21:30:10
【问题描述】:

我正在尝试编写代码来更新我的数组并根据每日工资给出总工资。我收到有关二进制运算符的错误,那么如何修复此行代码以免发生这种情况。

for day in stride(from: 1, to: 31, by: 1)
{
    dailyPay[day] = [Int(pay)]
    pay*=2
    if(day==1)
    {
        totalPay[day] = Int(pay)
    }
    else
    {

        totalPay[day] = totalPay[day-1]+dailyPay[day]//The problem is Here

        print("\(heade) \(day) \(head) \(dailyPay[day]) \(total) \(totalPay[day])")
    }

【问题讨论】:

    标签: swift swift4


    【解决方案1】:

    您没有显示变量的声明,但似乎totalPayInts 的数组,而dailyPayInt 数组的二维数组。所以,totalPay[day-1] 将是一个Int,而dailyPay[day] 将是一个[Int],或Ints 的数组。因此,您得到的错误正是它所说的;您不能使用+ 添加Int 和数组。

    从您的代码看来,dailyPay 可能是一个普通的旧整数数组,例如totalPay。所以你可以通过改变声明来解决这个问题,无论它是什么,从:

    var dailyPay: [[Int]]
    

    到:

    var dailyPay: [Int]
    

    然后,将赋值改为:

    dailyPay[day] = Int(pay)
    

    事情应该会奏效。

    旁注:您的for 循环是不必要的复杂。不需要stride,只要你可以:

    for day in 1...31
    

    【讨论】:

    • 这些是我的变量 decalrations:var pay = 0.01 var totalPay : [Int] = [0] var dailyPay = [[Int]](repeating: [Int](repeating: 1, count: 31 ), count:31) var heade = "Day#:" var head = "Pay: $" var total = "Total Pay: $"
    • 我知道您的代码复制的范围与 OP 的代码范围相同,但 OP 可能试图从 1 循环到 31(含)
    • 并且需要在追加元素之前初始化数组
    • 所以我确实使用以下方法初始化了数组: var dailyPay = [[Int]](repeating: [Int]( repeating: 1, count: 31), count:31) 但我仍然收到错误关于它的二元运算符。
    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2015-08-12
    • 2015-10-22
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多