Двоичный оператор '+' нельзя применять к операндам типа 'Int' и '[Int]' - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь написать код, который обновит мой массив и выдаст общую сумму, основанную на ежедневной оплате.Я получаю ошибку о бинарных операторах, так как я могу исправить этот строковый код, чтобы этого не произошло.

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])")
    }

1 Ответ

0 голосов
/ 26 апреля 2018

Вы не показываете объявления своих переменных, но кажется, что totalPay - это массив Int s, тогда как dailyPay - это двумерный массив массивов Int.Таким образом, totalPay[day-1] будет Int, тогда как dailyPay[day] будет [Int] или массивом Int с.Следовательно, ошибка, которую вы получаете, означает именно то, что говорится;вы не можете использовать + для добавления Int и массива.

Из вашего кода выясняется, что dailyPay, вероятно, предназначен для простого старого массива целых чисел, например totalPay,Таким образом, вы можете исправить это, изменив объявление, где бы оно ни было, с:

var dailyPay: [[Int]]

на:

var dailyPay: [Int]

Затем измените присвоение на:

dailyPay[day] = Int(pay)

и все должно работать.

Sidenote: Ваша for петля излишне сложна.Нет необходимости в stride, когда вы можете просто:

for day in 1...31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...